在Obj C中捕获React Native错误

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Obj C中捕获React Native错误相关的知识,希望对你有一定的参考价值。

我希望防止我的React Native应用程序中的任何意外引发的异常崩溃整个应用程序。

有没有办法在obj c端处理React Native JS中引发的异常。由于该过程超出了App Delegate,简单的@try/@catch根本不会削减它。

我已经实现了NSSetUncaughtExceptionHandler,我已经设置了它来提供故障堆栈跟踪,但在优雅处理RN问题方面却不尽如人意

答案

我不得不研究很多,因为它的记录非常糟糕。最后,我的一个朋友帮我解决了这个问题。

你需要设置

//This will tell react native that you are taking responsibility of fatal crashes.
RCTSetFatalHandler(^(NSError *error) {}); 

此外,创建一个RCTExceptionsManager实例并将其传递给您的类的extraModulesForBridge方法,遵循RCTBridgeDelegate协议。

- (NSArray *)extraModulesForBridge:(RCTBridge *)bridge {
    return @[[RCTExceptionsManager alloc] initWithDelegate:self];
}

您需要实现的两种方法是:

 - (void)handleSoftJSExceptionWithMessage:(NSString *)message stack:(NSArray *)stack exceptionId:(NSNumber *)exceptionId;
 - (void)handleFatalJSExceptionWithMessage:(NSString *)message stack:(NSArray *)stack exceptionId:(NSNumber *)exceptionId;

这使您可以完全控制致命的异常处理,并使本机崩溃不会使应用程序崩溃。

以上是关于在Obj C中捕获React Native错误的主要内容,如果未能解决你的问题,请参考以下文章

未捕获的错误:x 必须是 react-native 中的数字或数组

React - Native ' Redux 未捕获错误:操作必须是普通对象。按下按钮时使用自定义中间件进行异步操作

如何使用 react-native-camera 捕获图片

JNI 异常捕获与处理

React Native - PanResponder - 捕获冒泡机制详解

在 React Native App 中禁用屏幕捕获/ScreenShot