Как обработать 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`