Angular 2中的自定义ExceptionHandler

时间:2016-09-06 18:10:12

标签: angular exceptionhandler

我正在尝试在Angular 2中实现一个中心ExceptionHandler。我在SO中搜索并找到了关于这个主题的几个主题,如下面那些:

Module '"angular2/angular2"' has no exported member 'ExceptionHandler'

How to properly overwrite the exceptionHandler in angularjs?

但是,这个话题似乎已经过时了。

我正在使用Angular 2 RC5,并按照文档here,尝试实现:

import { ExceptionHandler } from '@angular/core';
export class CustomExceptionHandler implements ExceptionHandler {

call(error:any, stackTrace:any = null, reason:string = null) {
    // do something with the exception
}

}

但是我收到类似的错误“TS2420 - CustomExceptionHandler错误地实现了接口ExceptionHandler。类型'CustomExceptionHandler'中缺少属性'_logger'。

我是TS的新手,但我已经用Java编程了10年。

实际上,当我点击IDE(IntelliJ)中的ExceptionHandler时,代码会跟进一个类,而不是一个接口。

export declare class ExceptionHandler {
    private _logger;
    private _rethrowException;
    constructor(_logger: any, _rethrowException?: boolean);
    static exceptionToString(exception: any, stackTrace?: any, reason?: string): string;
    call(exception: any, stackTrace?: any, reason?: string): void;
}

1 个答案:

答案 0 :(得分:3)

以下是RC6,

例外是deprecated for public use see changelog for RC6

  

核心:例外不再是公共API的一部分。我们不希望任何人都应该引用异常类型。

ExceptionHandler.call(exception: any, stackTrace?: any, reason?: string): void;

更改为:

ErrorHandler.handleError(error: any): void;

使用ErrorHandlersee this

进行实施
class MyErrorHandler implements ErrorHandler {
  call(error, stackTrace = null, reason = null) {
    // do something with the exception
  }
}
@NgModule({
  providers: [{provide: ErrorHandler, useClass: MyErrorHandler}]
})
class MyModule {}

希望这有帮助!!