我正在覆盖默认的$exceptionHandler
,类似于角网站上的内容:https://docs.angularjs.org/api/ng/service/ $ exceptionHandler
效果很好。
然而,我不清楚如何观看'这个过程不是$emit
一个命名事件,其处理程序显式将错误(变形或其他)传递给$ exceptionHandler(在.directive || .config中注入) || .service | .run || etc ...)。
TL:DR - 我想知道如何模拟一个未处理的异常,默认的角度$ exceptionHandler应该选择 - 特别是从chrome console / REPL?
答案 0 :(得分:1)
您需要在摘要循环中运行生成异常的代码。更具体地说,您需要将其传递给$apply
,因为$digest
本身不使用$exceptionHandler
。
$apply
的伪代码:
function $apply(expr) {
try {
return $eval(expr);
} catch (e) {
$exceptionHandler(e);
} finally {
$root.$digest();
}
}
因此,您可以从控制台执行此操作:
window.test = function(fn) {
angular.element(document.querySelector('.ng-scope'))
.injector()
.get('$rootScope')
.$apply(fn);
}
window.test(function () { var a = b; });
window.test(function () { throw "Error"; });