如何获取异常的所有细节,包括errorMsg,url& lineNumber使用$ exceptionHandler?

时间:2014-08-13 11:46:07

标签: angularjs

我想在angularJS应用程序中设置JS异常日志记录模块,为此我使用 $ exceptionHandler

我使用以下代码记录应用程序错误:

app.config(function($provide) {
    $provide.decorator("$exceptionHandler", function($delegate) {
        return function(exception, cause) {
            $delegate(exception, cause);
            // alert(exception.message);
            console.log(JSON.stringify(exception.message += ' (caused by "' + cause + '")'));
        };
    });
});

但是在这里,我只收到消息,但我想要所有与异常相关的细节,如errorMsg,url,行号等。

如何使用上面的代码获取所有这些细节?

1 个答案:

答案 0 :(得分:5)

事实证明,标准化的error object的唯一部分是消息。 lineNumber和fileName都会在不同的浏览器版本中产生不一致的结果。

获取尽可能多的关于异常的详细信息的最常用方法是:

app.config(function($provide) {
    $provide.decorator("$exceptionHandler", function($delegate) {
        return function(exception, cause) {
            $delegate(exception, cause);

            var formatted = '';
            var properties = '';
            formatted += 'Exception: "' + exception.toString() + '"\n';
            formatted += 'Caused by: ' + cause + '\n';

            properties += (exception.message) ? 'Message: ' + exception.message + '\n' : ''
            properties += (exception.fileName) ? 'File Name: ' + exception.fileName + '\n' : ''
            properties += (exception.lineNumber) ? 'Line Number: ' + exception.lineNumber + '\n' : ''
            properties += (exception.stack) ? 'Stack Trace: ' + exception.stack + '\n' : ''

            if (properties) {
              formatted += properties;
            }

            console.log(formatted);
        };
    });
});