如何防止app在uncaughtErrorEvent上崩溃

时间:2018-02-07 11:05:34

标签: nativescript

有没有办法防止应用程序在发生JS未捕获错误时崩溃?

已经尝试将app.start(...)包装在try / catch中,但它肯定不起作用:)

3 个答案:

答案 0 :(得分:1)

确实,你可以注册一个uncaughtErrorEvent听众。

请参阅官方文档 - https://docs.nativescript.org/core-concepts/application-lifecycle#use-application-events

在引导应用程序之前,您可以在app.js中删除以下内容

var application = require("application");

application.on(application.uncaughtErrorEvent, function (args) {
    if (args.android) {
        // For Android applications, args.android is an NativeScriptError.
        console.log("NativeScriptError: " + args.android);
    } else if (args.ios) {
        // For iOS applications, args.ios is NativeScriptError.
        console.log("NativeScriptError: " + args.ios);
    }
});

答案 1 :(得分:0)

无法防止应用崩溃。您可以在uncaughtError应用程序事件中捕获错误,但是无论如何,该应用程序之后都会崩溃。

尝试导航到错误页面不起作用。

根据对此GitHub问题的评论:

有一种方法可以自定义显示的错误页面,但仅限于Android。显然,iOS没有类似的功能。

答案 2 :(得分:0)

这是一个较旧的问题,但是有一种文档化的方法可以防止使用低于4.2的Nativescript(您现在应该是6岁以上)

Disable rethrowing of uncaught js exceptions to native

基本上,捕获JS错误,但不要使本机应用程序崩溃。

也请注意免责声明。此时脚本将变得不稳定。是的,它没有崩溃,但是无论它死于何处都没有继续,因此对于稳定性可能会更糟。将应用置于错误状态或仅退出/重新崩溃可能更安全。