我正在编写一个错误日志记录模块来将 Raygun 日志记录添加到 AngularJS 应用程序。标准方法是注册一个装饰器,如下$exceptionHandler
所示:
$provide.decorator("$exceptionHandler", ['$delegate', function($delegate) {
return function (exception, cause) {
Raygun.send(exception);
$delegate(exception, cause);
}
}])
但是,这具有顺序依赖性,因为必须在 DI 框架首次加载之前安装装饰器$exceptionHandler
。如果我将此代码包装在一个模块中,则顺序依赖性就更不明显了,并且客户端很容易以错误的顺序初始化事物并且不知道为什么Raygun.send
没有被调用。(我是那个客户一天半。在我的辩护中,这是我第一次使用 Angular。)
我想说服 Angular 的 DI 框架在之前加载我的错误记录模块$exceptionHandler
,但有一个明显的警告是,如果在引导过程中很早就抛出任何异常,我会感到很沮丧。我想尝试将我的模块注册为 的依赖项$exceptionHandler
,但还没有弄清楚如何做到这一点——而且,这实际上并不$exceptionHandler
取决于我的代码。有没有一种我想念的惯用方法来做到这一点?