Как обработать uncaughtErrorEvent & Exception, чтобы написать журнал в NativeScript?

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

Я попробовал приведенный выше пример в {N Event@2.0.1, но он не работает для меня.

Можете ли вы объяснить более подробно?

1 ответ

Решение

В ответе в репозитории NativeScript GitHub введите описание ссылки следующим образом:

application.uncaughtErrorEvent будет срабатывать всякий раз, когда ваше приложение падает, и причина не обрабатывается.

Например: если вы попытаетесь инициализировать кнопку Android с нулевым контекстом, как это в вашем main-page.js, это выдаст ошибку

в main-page.js

var btn = new android.widget.Button(null);
What you can do to catch this error is to use uncaughtErrorEvent

in app.js

"use strict";
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);
        console.log(" *** StackTrace *** : " + args.android.stackTrace);
        console.log(" *** nativeException *** : " + args.android.nativeException);
    }
    else if (args.ios) {
        // For iOS applications, args.ios is NativeScriptError.
        console.log("NativeScriptError: " + args.ios);
    }
});
application.start({ moduleName: "main-page" });

Из журнала вы можете увидеть следующую информацию:

NativeScriptError : Error: The application crashed because of an uncaught exception.

из stackTrace вы можете увидеть причину этой ошибки:

 Attempt to invoke virtual method 'android.content.res.Resources 
 android.content.Context.getResources()' on null reference object

У вас также есть указатель, где произошла ошибка:

Frame: function:'navigatingTo', `file:'/data/data/org.nativescript.cameraUpload/files/app/main-page.js', 

строка: 11, столбец: 15`

Другие вопросы по тегам