Guest User

Untitled

a guest
Feb 25th, 2018
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.19 KB | None | 0 0
  1. import { AppDataService, AppNotificationService } from '../services';
  2. import { AppError } from '../entities';
  3. import { Injectable, Injector, ErrorHandler } from '@angular/core';
  4.  
  5.  
  6. @Injectable()
  7. export class AppErrorHandler implements ErrorHandler {
  8.  
  9. constructor(private injector: Injector) { }
  10.  
  11.  
  12. handleError(error) {
  13.  
  14. //As AppErrorHandler would be loaded before AppDataService, hence we cannot insantiate AppDataService in constructor
  15. //so get AppDataService using injector
  16. const dataService = this.injector.get(AppDataService);
  17.  
  18. const errorMessage = error.message || 'Unknown error thrown. Please see stack';
  19.  
  20. // post the error to the server logs
  21. dataService.addToLog({ title: errorMessage, description: error.stack });
  22.  
  23. // when throwing errors anywhere in app in try/catch blocks, we cast the error as AppError.
  24. // AppError is a type to store error details
  25. if (error instanceof AppError){
  26. if (error.notifyUser){ //if user needs to be informed
  27. const appNotificationService = this.injector.get(AppNotificationService);
  28. appNotificationService.set({ type: error.type, message: error.message });
  29. }
  30. }
  31.  
  32. throw appError;
  33. }
  34.  
  35. }
Add Comment
Please, Sign In to add comment