Angular 54: Manejo de errores
easy⏱ 5 mincourseangular
ErrorHandler es un único punto de intercepción sobrescribible
ErrorHandler es una clase inyectable con un solo método: handleError(error: unknown). Angular lo llama para cada error que captura internamente, así que implementar tu propia versión — @Injectable() + implements ErrorHandler — te da un único lugar para registrar, reportar o reaccionar ante fallos en toda la app.
@Injectable()
export class GlobalErrorHandler implements ErrorHandler {
handleError(error: unknown): void {
console.error('[GlobalErrorHandler]', error);
}
}
Registrarlo reemplaza el manejador por defecto de Angular en toda la app
{ provide: ErrorHandler, useClass: GlobalErrorHandler } en el arreglo providers le dice al inyector de Angular: cada vez que algo pida ErrorHandler, entrégale una instancia de GlobalErrorHandler en lugar del valor por defecto integrado. Como Angular mismo usa ErrorHandler internamente, este único provider cambia el comportamiento de toda la app.
export const appConfig: ApplicationConfig = {
providers: [{ provide: ErrorHandler, useClass: GlobalErrorHandler }],
};
handleError recibe unknown, no Error
Angular tipó handleError para aceptar unknown porque JavaScript permite lanzar cualquier cosa, no solo instancias de Error. Un manejador de producción típicamente lo acota — comprobando error instanceof Error — antes de extraer un .message o .stack para reportarlo.