2016-09-06 4 views
1

я пытаюсь реализовать центральный ExceptionHandler в угловой 2. Я искал в SO и нашло несколько тем на эту тему, как и ниже:Пользовательское ExceptionHandler в угловом 2

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

How to properly overwrite the exceptionHandler in angularjs?

Но эти темы кажутся устаревшими.

I'm, используя угловую 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. Свойство «_logger» отсутствует в типе «CustomExceptionHandler».

Я новичок в TS, но я программировал на Java на 10 ye АРС.

Фактически, когда я нажимаю ExceptionHandler в IDE (IntelliJ), код следует за классом, а не с интерфейсом.

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; 
} 
+0

Посмотрите на это: http://www.bennadel.com/blog/3138-creating-a-custom-errorhandler-in-angular-2-rc-6.htm. Кажется, что были исправлены ошибки в обработке ошибок с RC6, поэтому вы можете подумать об обновлении. – j2L4e

+0

@etc: где вы можете это решить? вы попробовали решение ниже? –

+0

Спасибо! Работает как шарм. – etc

ответ

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; 

Для реализации с помощью ErrorHandler, see this

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

Надеется, что это помогает !!

+0

Спасибо, ребята. Работает на меня. – etc

+0

Приветствия !!, вы можете принять ответ .. –

Смежные вопросы