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

标签 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 + '")'));
        };
    });
});

但在这里,我只收到消息,但我想要与异常相关的所有详细信息,如错误消息、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);
        };
    });
});

关于angularjs - 如何使用 $exceptionHandler 获取异常的所有详细信息,包括 errorMsg、url 和 lineNumber?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25285306/

相关文章:

javascript - ng-options 嵌套在 ng-repeat 中

javascript - localStorage 中的 Angular 缓存

html - 循环内的div文本对齐中心问题

javascript - Angularjs - 复选框 - 计算多个选定/未选定的项目

javascript - 如何将 Angular-Chart.JS 数据添加到 UI-Router .State Controller 中?

javascript - 链接选择框

angularjs - ionic : Can't scroll up while using anchorScroll in ionic

javascript - 在 AngularJS 指令中正确实现对象属性的绑定(bind)

node.js - Yeoman 构建的 Angular 应用程序未将 Bootstrap 字体部署到 Heroku

javascript - Angularjs Rails-起源 http ://localhost:9000 is not allowed by Access-Control-Allow-Origin.