Custom Exception Handler in Angular2

后端 未结 3 538
野性不改
野性不改 2020-12-03 22:28

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

相关标签:
3条回答
  • 2020-12-03 23:06

    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.

    Plunker example

    0 讨论(0)
  • 2020-12-03 23:12

    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).

    0 讨论(0)
  • 2020-12-03 23:28

    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);
        }
    }
    
    0 讨论(0)
提交回复
热议问题