OStack程序员社区-中国程序员成长平台

标题: javascript - 在 Obj C 中捕获 React Native 错误 [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-13 13:05
标题: javascript - 在 Obj C 中捕获 React Native 错误

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

有什么方法可以处理在 obj c 端的 React Native JS 中引发的异常。 由于该过程超出了 App Delegate,简单的 @try/@catch 根本无法解决问题。

我已经实现了 NSSetUncaughtExceptionHandler,我已将其设置为提供故障堆栈跟踪,但在优雅地处理 RN 问题方面还不够



Best Answer-推荐答案


我不得不进行大量研究,因为它的文档非常少。最后,我的一个 friend 帮我解决了这个问题。

你需要设置

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

此外,创建一个 RCTExceptionsManager 实例并将其传递到您的类的 extraModulesForBridge 方法中,遵守 RCTBridgeDelegate 协议(protocol)。

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

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

 - (void)handleSoftJSExceptionWithMessageNSString *)message stackNSArray *)stack exceptionIdNSNumber *)exceptionId;
 - (void)handleFatalJSExceptionWithMessageNSString *)message stackNSArray *)stack exceptionIdNSNumber *)exceptionId;

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

关于javascript - 在 Obj C 中捕获 React Native 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35582141/






欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) Powered by Discuz! X3.4