Dan*_*bib 2 javascript exception-handling objective-c ios 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) {});
Run Code Online (Sandbox Code Playgroud)
另外,创建一个RCTExceptionsManager实例,并按照RCTBridgeDelegate协议将其传递到您类的extraModulesForBridge方法中。
- (NSArray *)extraModulesForBridge:(RCTBridge *)bridge {
return @[[RCTExceptionsManager alloc] initWithDelegate:self];
}
Run Code Online (Sandbox Code Playgroud)
您需要实现的两种方法是:
- (void)handleSoftJSExceptionWithMessage:(NSString *)message stack:(NSArray *)stack exceptionId:(NSNumber *)exceptionId;
- (void)handleFatalJSExceptionWithMessage:(NSString *)message stack:(NSArray *)stack exceptionId:(NSNumber *)exceptionId;
Run Code Online (Sandbox Code Playgroud)
这使您可以完全控制致命的异常处理,并对本机崩溃做出反应不会使应用程序崩溃。
| 归档时间: |
|
| 查看次数: |
498 次 |
| 最近记录: |