我想抓住android反应原生应用程序的未捕获异常。为此,一些博客建议使用以下代码:
ErrorUtils.setGlobalHandler(error => {
sentry.capture(error);
NativeModules.BridgeReloader.reload()
});
但我不知道实现这个的完整机制。任何人都可以告诉我如何实现此类要求的代码?
答案 0 :(得分:0)
我得到了解决方案,我们应该使用ErrorUtils处理程序来检测运行时异常。为此,我们必须添加
if (ErrorUtils._globalHandler) {
instance.defaultHandler = ErrorUtils.getGlobalHandler && ErrorUtils.getGlobalHandler() || ErrorUtils._globalHandler;
ErrorUtils.setGlobalHandler(this.wrapGlobalHandler); //feed errors directly to our wrapGlobalHandler function
}
并在您的wrapGlobalHandler方法
中async wrapGlobalHandler(error, isFatal) {
//* Report error here
setTimeout (() => {
this.defaultHandler(error, isFatal); //after you're finished, call the defaultHandler so that react-native also gets the error
if (Platform.OS == 'android') {
NodeModule.reload()
}
}, 1000);
}