CompUGE-Bench / src /app /error_handling /global-error-handler.service.ts
Ahmad Shallouf
added new modifications
27e40c0
import { Injectable, ErrorHandler, Injector } from '@angular/core';
import { HttpErrorResponse } from '@angular/common/http';
import { Router } from '@angular/router';
@Injectable({
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);
}
}