32 lines
1.0 KiB
TypeScript
32 lines
1.0 KiB
TypeScript
import { ErrorHandler, inject, Injectable } from '@angular/core';
|
|
import { HttpErrorResponse } from '@angular/common/http';
|
|
import { LoggerService } from '@app/infrastructure/shared/logger.service';
|
|
|
|
@Injectable()
|
|
export class GlobalErrorHandler implements ErrorHandler {
|
|
// On utilise inject() pour éviter les soucis de dépendance circulaire dans le constructeur
|
|
private logger = inject(LoggerService);
|
|
|
|
handleError(error: any): void {
|
|
let message = '';
|
|
let stackTrace = '';
|
|
|
|
if (error instanceof HttpErrorResponse) {
|
|
// Erreur serveur
|
|
message = `Erreur Serveur: ${error.status} ${error.message}`;
|
|
} else if (error instanceof Error) {
|
|
// Erreur Client (JavaScript)
|
|
message = `Erreur Client: ${error.message}`;
|
|
stackTrace = error.stack || '';
|
|
} else {
|
|
message = error;
|
|
}
|
|
|
|
// On loggue l'erreur via notre service
|
|
this.logger.error(message, stackTrace);
|
|
|
|
// Optionnel : Relancer l'erreur pour qu'elle apparaisse quand même dans la console du navigateur en DEV
|
|
throw error;
|
|
}
|
|
}
|