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} @2.0.1中尝试过以上示例,但它对我不起作用。
你能解释一下更多细节吗?
答案 0 :(得分:2)
在NativeScript github存储库enter link description here中回答如下:
每当您的应用崩溃并且未处理原因时,都会触发application.uncaughtErrorEvent。
例如: 如果你尝试在你的main-page.js中初始化一个像这样的空上下文的android按钮,它会抛出一个错误
在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`