В RN существует глобальный обработчик ErrorUtils, который обрабатывает исключенные и исключенные исключения для вашего уровня JN RN. Вы можете использовать это, чтобы установить обработчик как:
if (ErrorUtils._globalHandler) {
instance.defaultHandler = ErrorUtils.getGlobalHandler && ErrorUtils.getGlobalHandler() || ErrorUtils._globalHandler;
ErrorUtils.setGlobalHandler(instance.wrapGlobalHandler); //feed errors directly to our wrapGlobalHandler function
}
И метод обработчика
async wrapGlobalHandler(error, isFatal){
const stack = parseErrorStack(error);
//Add this error locally or send it your remote server here
//*> Finish activity
setTimeout (() => {
instance.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);
}
Обратите внимание, в коде выше необходимо создать модуль узла для андроид только и написать Реагировать Native метод моста там ваш ReactContextBaseJavaModule:
@ReactMethod
public void reload() {
Activity activity = getCurrentActivityInstance();
Intent intent = activity.getIntent();
activity.finish();
activity.startActivity(intent);
}
Спасибо!
https://stackoverflow.com/questions/30918349/how-to-catch-uncaught-exception-globally-in-react-native – gyzerok
Возможный дубликат [как поймать неперехваченное исключение (глобально) в реакции native] (http://stackoverflow.com/questions/30918349/how-to-catch-uncaught-exception-globally-in-react-native) – gyzerok