$exceptionHandler en Angular moderno
Sobrescribir $exceptionHandler pasa a ser una clase que implementa ErrorHandler, registrada como provider.
Antes · AngularJS
app.factory('$exceptionHandler', function ($injector) {
return function (exception, cause) {
var tracker = $injector.get('ErrorTracker');
tracker.report(exception, { cause: cause });
console.error(exception);
};
});Después · Angular@Injectable()
export class AppErrorHandler implements ErrorHandler {
private tracker = inject(ErrorTracker);
handleError(error: unknown) {
this.tracker.report(error);
console.error(error);
}
}
// app.config.ts
providers: [
{ provide: ErrorHandler, useClass: AppErrorHandler },
provideBrowserGlobalErrorListeners(),
]Qué cambia
- handleError recibe solo el error; no hay argumento cause.
- Recibe los errores lanzados en templates, hooks de ciclo de vida y handlers de eventos. Las fallas HTTP que tu código captura nunca llegan ahí, así que manéjalas en un interceptor.
- provideBrowserGlobalErrorListeners() (Angular 20 en adelante) también reenvía al ErrorHandler los eventos error y unhandledrejection de window.
Consejo de migración. En una app híbrida los dos handlers están activos, uno por framework. Envía ambos al mismo tracker y etiqueta cada reporte con su origen, así ves bajar los errores legacy a medida que migran las pantallas.
Relacionado
¿Planeas una migración o una plataforma de microfrontends?
En una llamada de 20 minutos me cuentas tu situación y te digo cómo la abordaría. Si todavía no vale la pena, también te lo digo.
Escríbeme por LinkedIn