1

我正在覆盖默认值$exceptionHandler,类似于在 Angular 网站上看到的内容:https ://docs.angularjs.org/api/ng/service/ $exceptionHandler

效果很好。

但是,我半不清楚如何“观察”这个过程,而不是$emit处理程序明确将错误(变幻或其他)传递到 $exceptionHandler (注入到 `.directive || 中的命名事件) .config || .service | .run || 等...)。

TL:DR - 我想知道如何模拟一个未处理的异常,默认的角度 $exceptionHandler 意味着要拾取 - 特别是从 chrome 控制台/REPL?

4

1 回答 1

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"; });
于 2017-01-26T11:57:12.297 回答