javascript / intermediate
Snippet
Globale Fehlerbehandlung von Anwendungsfehlern mit dem Angular ErrorHandler
Angular stellt die ErrorHandler-Klasse als Schnittstelle für die zentrale Ausnahmebehandlung in der gesamten Anwendung bereit. Durch die Implementierung von ErrorHandler und dessen Bereitstellung per Dependency Injection können unbehandelte Fehler in Komponenten, Services oder Templates abgefangen, formatiert und an Logging-Dienste übertragen werden, bevor der Benutzer informiert wird.
snippet.js
javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import { ErrorHandler, Injectable, Injector } from '@angular/core';import { LoggingService } from './logging.service';@Injectable()export class GlobalLoggingErrorHandler implements ErrorHandler {constructor(private injector: Injector) {}handleError(error: unknown): void {const logger = this.injector.get(LoggingService);const message = error instanceof Error ? error.message : 'Unknown runtime error';const stack = error instanceof Error ? error.stack : '';logger.logError({ message, stack, timestamp: Date.now() });console.error('Captured by GlobalLoggingErrorHandler:', error);}}
angular
Erklärung
1
export class GlobalLoggingErrorHandler implements ErrorHandler {
Definiert eine benutzerdefinierte Klasse, die das standardmäßige ErrorHandler-Interface von Angular implementiert.
2
constructor(private injector: Injector) {}
Injiziert den Injector zum verzögerten Laden von Diensten (wie dem LoggingService), um zirkuläre Abhängigkeiten beim App-Start zu verhindern.
3
handleError(error: unknown): void {
Überschreibt die zentrale Callback-Methode, die bei jeder unbehandelten Ausnahme innerhalb der Angular-Zone ausgelöst wird.
4
const message = error instanceof Error ? error.message : 'Unknown runtime error';
Führt eine Typüberprüfung des unknown-Fehlerobjekts durch, um sicher auf standardmäßige Fehlereigenschaften zuzugreifen.