Как ErrorUtils работает с Android для необработанного исключения в React Native в режиме отладки и производства?

Я хочу поймать неперехваченное исключение Android, реагирующего на собственное приложение. Для этого некоторые блоги предлагают использовать следующий код:

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

Но я не знаю полного механизма для реализации этого. Может ли кто-нибудь сообщить мне, как реализовать код для такого требования?


person Akhi    schedule 21.12.2016    source источник


Ответы (1)


У меня есть решение. Мы должны использовать обработчик 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);
}
person Akhi    schedule 07.02.2017