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); | |
| } | |
| } | |