如何处理未捕获的错误事件和异常以在 NativeScript 中写入日志?
How to handle uncaughtErrorEvent & Exception to write a log in 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}@2.0.1 中尝试了上面的示例,但它对我不起作用。
能详细解释一下吗?
在 NativeScript github 存储库 enter link description here 中回答如下:
application.uncaughtErrorEvent 将在您的应用崩溃且原因未得到处理时触发。
例如:
如果您尝试在 main-page.js 中使用这样的空上下文初始化 android 按钮,它将抛出错误
在主-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`
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 中尝试了上面的示例,但它对我不起作用。
能详细解释一下吗?
在 NativeScript github 存储库 enter link description here 中回答如下:
application.uncaughtErrorEvent 将在您的应用崩溃且原因未得到处理时触发。
例如: 如果您尝试在 main-page.js 中使用这样的空上下文初始化 android 按钮,它将抛出错误
在主-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`