In angular2 the exceptions are logged in the console by default. I heard that we can inherit the Angular ExceptionHandler and create our own exception handler so that we can override the default behavior. I tried to do it but didn't work. Can anyone help me on this with an example. Thanks in advance ....
Asked
Active
Viewed 7,857 times
7
-
look at this http://stackoverflow.com/questions/32980405/module-angular2-angular2-has-no-exported-member-exceptionhandler – Gustavo Oct 09 '15 at 17:12
3 Answers
13
As of version 2.0.1, the current way of creating a custom error handler is the ErrorHandler
interface found in @angular/core
.
From the docs:
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 {}
When applying this on the root module, all children modules will receive the same error handler (unless they have another one specified in their provider list).

DerekMT12
- 1,329
- 11
- 15
5
It looks like you need to create your own class to handle exceptions, and then bind it in your app at bootstrap time, something like this:
import {provide, ExceptionHandler} from '@angular/core';
class MyExceptionHandler implements ExceptionHandler {
call(error, stackTrace = null, reason = null) {
// do something with the exception
}
}
And then at bootstrap time, bind this new implementation as the ExceptionHandler:
bootstrap(MyApp,
[provide(ExceptionHandler, {useClass: MyExceptionHandler})])
See here for reference.

Günter Zöchbauer
- 623,577
- 216
- 2,003
- 1,567

Angular University
- 42,341
- 15
- 74
- 81
-
1And there is only one little problem: how are you going to get ExceptionHandler?) – alexpods Sep 10 '15 at 21:08
-
I tried to add the custom exception handler but didn't work . Anyone has a working example ? – Vinz and Tonz Sep 11 '15 at 22:18
-
I am getting an exception when i tried with custom exception handler - "Cannot resolve all parameters for MyExceptionHandler(?, Boolean). Make sure they all have valid type or annotations." – Vinz and Tonz Sep 13 '15 at 00:05
-
Right now i believe `provide` method is deprecated. This should also work: `{provide: ExceptionHandler, useClass: MyExceptionHandler}` – Adam Szmyd Jul 29 '16 at 10:29
0
Here's an exception handler that works in alpha .46
import {ExceptionHandler} from 'angular2/angular2';
export class ERISExceptionHandler extends ExceptionHandler {
call(error, stackTrace = null, reason = null) {
alert('error:' + error + ' stackTrace: ' + stackTrace + ' reason: ' + reason);
}
}

Andrew Walters
- 4,763
- 6
- 35
- 49
-
Except that it will bomb trying to `super.call(error, stackTrace, reason)`. It would be great to keep the nice angular error messages going with a custom exception handler. – asido Aug 03 '16 at 19:46