如何处理uncaughtErrorEvent&在NativeScript中编写日志的异常?

时间:2016-06-15 05:58:32

标签: 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中尝试过以上示例,但它对我不起作用。

你能解释一下更多细节吗?

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`