Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import { AppDataService, AppNotificationService } from '../services';
- import { AppError } from '../entities';
- import { Injectable, Injector, ErrorHandler } from '@angular/core';
- @Injectable()
- export class AppErrorHandler implements ErrorHandler {
- constructor(private injector: Injector) { }
- handleError(error) {
- //As AppErrorHandler would be loaded before AppDataService, hence we cannot insantiate AppDataService in constructor
- //so get AppDataService using injector
- const dataService = this.injector.get(AppDataService);
- const errorMessage = error.message || 'Unknown error thrown. Please see stack';
- // post the error to the server logs
- dataService.addToLog({ title: errorMessage, description: error.stack });
- // when throwing errors anywhere in app in try/catch blocks, we cast the error as AppError.
- // AppError is a type to store error details
- if (error instanceof AppError){
- if (error.notifyUser){ //if user needs to be informed
- const appNotificationService = this.injector.get(AppNotificationService);
- appNotificationService.set({ type: error.type, message: error.message });
- }
- }
- throw appError;
- }
- }
Add Comment
Please, Sign In to add comment