Angular2中的自定义异常处理程序

Vin*_*onz 7 angular

在angular2中,默认情况下会在控制台中记录异常.我听说我们可以继承Angular ExceptionHandler并创建我们自己的异常处理程序,以便我们可以覆盖默认行为.我试着这样做,但没有奏效.任何人都可以通过一个例子来帮助我.提前致谢 ....

Der*_*T12 13

从版本2.0.1开始,创建自定义错误处理程序的当前方法是ErrorHandler找到的接口@angular/core.

来自文档:

https://angular.io/docs/ts/latest/api/core/index/ErrorHandler-class.html

import { NgModule, ErrorHandler } from '@angular/core';

class MyErrorHandler implements ErrorHandler {
  handleError(error) {
    // do something with the exception
  }
}
@NgModule({
  providers: [{ provide: ErrorHandler, useClass: MyErrorHandler }]
})
class MyModule {}
Run Code Online (Sandbox Code Playgroud)

在根模块上应用它时,所有子模块将接收相同的错误处理程序(除非它们在其提供程序列表中指定了另一个).

  • 我在哪里添加myErrorHandler类? (3认同)

Ang*_*ity 5

看起来你需要创建自己的类来处理异常,然后在引导时将它绑定在你的应用程序中,如下所示:

import {provide, ExceptionHandler} from '@angular/core';

class MyExceptionHandler implements ExceptionHandler {
    call(error, stackTrace = null, reason = null) {
       // do something with the exception
    }
 }
Run Code Online (Sandbox Code Playgroud)

然后在bootstrap时,将这个新实现绑定为ExceptionHandler:

bootstrap(MyApp, 
    [provide(ExceptionHandler, {useClass: MyExceptionHandler})])
Run Code Online (Sandbox Code Playgroud)

请参阅此处以供参考.

Plunker的例子