在调试和生产模式下,ErrorUtils如何与React Native中的未捕获异常一起使用?

时间:2016-12-21 06:45:52

标签: android react-native

我想抓住android反应原生应用程序的未捕获异常。为此,一些博客建议使用以下代码:

 ErrorUtils.setGlobalHandler(error => {
    sentry.capture(error);
    NativeModules.BridgeReloader.reload()
  });

但我不知道实现这个的完整机制。任何人都可以告诉我如何实现此类要求的代码?

1 个答案:

答案 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);
}