Spaces:
Sleeping
Sleeping
import { Injectable, ErrorHandler, Injector } from '@angular/core'; | |
import { HttpErrorResponse } from '@angular/common/http'; | |
import { Router } from '@angular/router'; | |
({ | |
providedIn: 'root', | |
}) | |
export class GlobalErrorHandlerService implements ErrorHandler { | |
constructor(private injector: Injector) {} | |
handleError(error: any): void { | |
// Log the error to the console | |
console.error('An error occurred:', error); | |
// Differentiate between error types | |
if (error instanceof HttpErrorResponse) { | |
// Handle HTTP errors | |
this.handleHttpError(error); | |
} else if (error instanceof TypeError) { | |
// Handle client-side errors (TypeErrors) | |
this.handleClientError(error); | |
} else if (error instanceof Error) { | |
// Handle generic JavaScript errors | |
this.handleGenericError(error); | |
} else { | |
// Handle any other type of error | |
this.handleUnknownError(error); | |
} | |
// Always log the error, could be to a server or external logging service | |
this.logError(error); | |
} | |
private handleHttpError(error: HttpErrorResponse): void { | |
// Customize the message for different status codes | |
let errorMessage = 'An unexpected error occurred. Please try again later.'; | |
switch (error.status) { | |
case 400: | |
errorMessage = 'Bad Request: Please check your input.'; | |
break; | |
case 401: | |
errorMessage = 'Unauthorized: Please log in again.'; | |
break; | |
case 404: | |
errorMessage = 'Not Found: The requested resource was not found.'; | |
break; | |
case 500: | |
errorMessage = 'Internal Server Error: Please try again later.'; | |
break; | |
case 503: | |
errorMessage = 'Service Unavailable: Please try again later.'; | |
break; | |
default: | |
errorMessage = `Unexpected Error: ${error.message}`; | |
break; | |
} | |
// Optionally, display the error to the user | |
alert(errorMessage); | |
} | |
private handleClientError(error: TypeError): void { | |
// Handle client-side errors | |
alert('A client-side error occurred. Please try again.'); | |
} | |
private handleGenericError(error: Error): void { | |
// Handle generic JavaScript errors | |
alert('An unexpected error occurred. Please try again later.'); | |
} | |
private handleUnknownError(error: any): void { | |
// Handle unknown errors | |
alert('An unknown error occurred. Please try again later.'); | |
} | |
private logError(error: any): void { | |
// Implement your logging logic here, e.g., send the error to a server | |
console.error('Logging the error:', error); | |
} | |
} | |