Javascript AngularJS-禁用$exceptionHandler
我不希望$exceptionHandler处理任何异常-我希望它们能够应用到浏览器(主要用于Visual Studio中的IE测试) 我尝试重写$exceptionHandler并简单地重新引用错误,这给了我$digest错误的10次迭代(这是有意义的) 我如何完全关闭它 编辑Javascript AngularJS-禁用$exceptionHandler,javascript,angularjs,Javascript,Angularjs,我不希望$exceptionHandler处理任何异常-我希望它们能够应用到浏览器(主要用于Visual Studio中的IE测试) 我尝试重写$exceptionHandler并简单地重新引用错误,这给了我$digest错误的10次迭代(这是有意义的) 我如何完全关闭它 编辑 不幸的是,重试错误并不能解决问题-即只从重试中知道错误,而不从源代码知道错误。尝试在窗口内抛出异常。setTimeout(而不是$timeout)延迟执行,这将允许您逃脱$digest黑洞。但不确定它是否会在IE中保留堆
不幸的是,重试错误并不能解决问题-即只从重试中知道错误,而不从源代码知道错误。尝试在
窗口内抛出异常。setTimeout
(而不是$timeout
)延迟执行,这将允许您逃脱$digest
黑洞。但不确定它是否会在IE中保留堆栈跟踪。经过一些研究,这是不可能的。Angular捕获他们的错误,然后显式调用异常处理程序-在许多情况下,它不仅让错误传播。,还可能:
angular.module('exceptionOverride', []).factory('$exceptionHandler', function () {
return function (exception, cause) {
exception.message += ' (caused by "' + cause + '")';
throw exception;
};
});
此示例将覆盖$exceptionHandler的正常操作,以
使角度异常在发生时很难失败,而不仅仅是
登录到控制台
您的重写$exceptionHandler是否与中提供的类似?感谢mems-问题在于它仍然会通过代码捕获错误并从重写中重新引用它。当这种情况发生时,您会丢失原始堆栈跟踪。这是angularjs中最令人沮丧的部分之一。我不明白为什么它是图书馆的一部分。