我不希望 $exceptionHandler 处理任何异常 - 我希望它们传播到浏览器(主要用于 Visual Studio 中的 IE 测试)。
我尝试覆盖 $exceptionHandler 并简单地重新抛出错误,这给了我 $digest 错误的 10 次迭代(这是有道理的)。
如何完全关闭它?
编辑
不幸的是,重新抛出错误并不能解决问题 - IE 只知道重新抛出的错误,而不是源代码。
我不希望 $exceptionHandler 处理任何异常 - 我希望它们传播到浏览器(主要用于 Visual Studio 中的 IE 测试)。
我尝试覆盖 $exceptionHandler 并简单地重新抛出错误,这给了我 $digest 错误的 10 次迭代(这是有道理的)。
如何完全关闭它?
编辑
不幸的是,重新抛出错误并不能解决问题 - IE 只知道重新抛出的错误,而不是源代码。
经过一番研究,这是不可能的。Angular 捕获它们的错误,然后显式调用异常处理程序——在许多情况下,它不仅仅让错误传播。
根据文档,有可能:
angular.module('exceptionOverride', []).factory('$exceptionHandler', function () {
return function (exception, cause) {
exception.message += ' (caused by "' + cause + '")';
throw exception;
};
});
此示例将覆盖 $exceptionHandler 的正常操作,以使角度异常在发生时难以失败,而不仅仅是登录到控制台。
window.setTimeout
尝试在(不是)延迟执行中抛出异常$timeout
,这将允许您逃离$digest
黑洞。但不确定它是否会保留 IE 中的堆栈跟踪。