如何处理未捕获的错误事件和异常以在 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`