AngularJS - 禁用$ exceptionHandler

时间:2013-09-12 21:19:04

标签: javascript angularjs

我不希望$ exceptionHandler处理任何异常 - 我希望它们能够推进到浏览器(主要用于Visual Studio中的IE测试)。

我尝试重写$ exceptionHandler并简单地重新抛出错误,这给了我10次迭代$ digest错误(这是有意义的)。

如何完全关闭它?

修改

不幸的是,重新抛出错误并没有解决问题 - IE只知道重新抛出的错误,而不是来自源。

3 个答案:

答案 0 :(得分:8)

经过一番研究,这是不可能的。 Angular捕获它们的错误,然后显式调用异常处理程序 - 在许多情况下,它不仅仅是让错误传播。

答案 1 :(得分:2)

According to the documentation,这是可能的:

angular.module('exceptionOverride', []).factory('$exceptionHandler', function () {
    return function (exception, cause) {
        exception.message += ' (caused by "' + cause + '")';
        throw exception;
    };
});
  

此示例将覆盖$ exceptionHandler的正常操作   当角度异常发生时,它们会变得非常困难,而不仅仅是   登录到控制台。

答案 2 :(得分:1)

尝试在window.setTimeout(非$timeout)延迟执行中抛出异常,这样您就可以逃脱$digest黑洞。但不确定它是否会保留IE中的堆栈跟踪。