angularjs之如何使用 $exceptionHandler 获取异常的所有详细信息,包括 errorMsg、url 和 lineNumber

52php 阅读:15 2024-11-01 17:39:52 评论:0

我想在我的 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 + '")')); 
        }; 
    }); 
}); 

但在这里,我只收到消息,但我想要与异常相关的所有详细信息,如错误消息、url、行号等。

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

请您参考如下方法:

事实证明,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); 
        }; 
    }); 
}); 


标签:Exception
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号