2016-08-27 2 views

ответ

1

Вы можете использовать Angular 2 ExceptionHandler.

The default implementation of ExceptionHandler prints error messages to the Console. To intercept error handling, write a custom exception handler that replaces this default as appropriate for your app.

Таким образом, вы можете создать свою собственную реализацию этого класса

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

И затем, включите его в верхнем наиболее компонент (компонент App), как это:

import {ExceptionHandler,provide} from '@angular2/core'; 
import {MyExceptionHandler} from './folder/file-name'; 

@Component({ 
    providers: [provide(ExceptionHandler, {useClass: MyExceptionHandler})] 
}) 
export class MyApp{...} 

ОБНОВЛЕНИЕ

От Ionic2 RC, для того чтобы заменить ExceptionHandler для собственной пользовательской реализации, мы урожденная включить его в NgModule, как это:

@NgModule({ 
    providers: [{provide: ErrorHandler, useClass: MyExceptionHandler}] 
}) 
class MyModule {} 
+1

Спасибо, я пытался, что и у меня есть ошибка 'ошибка Машинопись: приложение/app.ts (118,7): TS2420 Error: Class ' MyExceptionHandler 'неправильно реализует интерфейс «ExceptionHandler». Свойство «_logger» отсутствует в типе «MyExceptionHandler». «Я пробовал разные вещи после, но он по-прежнему ошибочен.' Roperty '_logger' является закрытым в типе «ExceptionHandler», но не в типе «MyExceptionHandler» или 'TypeScript error: app/app.ts (118,7): Ошибка TS2420: класс «MyExceptionHandler» неправильно реализует интерфейс «ExceptionHandler». Типы имеют отдельные декларации частной собственности «_logger» – chikincrow

+1

Если я не реализую интерфейс, во время выполнения появляется ошибка 'Uncaught TypeError: Невозможно прочитать свойство 'call' of undefined' – chikincrow

+0

Извините, что это происходит в мое приложение тоже. Кажется, это связано с ошибкой на Angular2 (есть несколько проблем, таких как [этот] (https://github.com/angular/angular/issues/6565), [этот] (https://github.com/ угловой/угловой/проблемы/8993) и [этот] (https://github.com/angular/angular/issues/6865). Вы пробовали использовать [этот обходной путь] (https://github.com/angular/ angel/issues/6865 # issuecomment-179889736)? В этом комментарии и в следующем, @tbragaf поделился обходным решением и, похоже, работает правильно в моем приложении. – sebaferreras

2

UPDATE: Последние angular2, есть ErrorHandler не ExceptionHandler в угловом ядро, которое теперь @angular/core не @angular2/core.

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

export class MyExceptionHandler implements ErrorHandler { 
    handleError(error) { 
    // do something with the error 
    } 
} 

Ссылка на новый угловой класс: https://angular.io/docs/ts/latest/api/core/index/ErrorHandler-class.html

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