javascript / intermediate
Snippet
Erfassen unbehandelter Anwendungsfehler mit einem benutzerdefinierten globalen ErrorHandler
Angular stellt einen zentralen ErrorHandler-Hook bereit, der alle unbehandelten Ausnahmen aus Templates, Services und Lifecycle-Hooks empfängt. Durch die Implementierung der ErrorHandler-Klasse und eine differenzierte Kontrollfluss-Verzweigung anhand der Fehlertypen (z. B. Unterscheidung zwischen Netzwerkfehlern und regulären JavaScript-Error-Objekten) können Diagnosedaten strukturiert an externe Monitoring-Tools übermittelt werden.
snippet.js
javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import { ErrorHandler, Injectable, inject } from '@angular/core';import { HttpErrorResponse } from '@angular/common/http';import { LoggingService } from './logging.service';@Injectable()export class GlobalApplicationErrorHandler implements ErrorHandler {private readonly logger = inject(LoggingService);public handleError(error: unknown): void {if (error instanceof HttpErrorResponse) {this.logger.logHttpFailure(`Status: ${error.status} - ${error.message}`);return;}if (error instanceof Error) {this.logger.logFatalCrash({name: error.name,message: error.message,stack: error.stack ?? 'No stack trace available'});return;}this.logger.logUnknown(String(error));}}
angular
Erklärung
1
export class GlobalApplicationErrorHandler implements ErrorHandler {
Deklariert eine Klasse, die das ErrorHandler-Interface von Angular implementiert, um das Standard-Fehlerverhalten zu überschreiben.
2
public handleError(error: unknown): void {
Definiert die erforderliche Einstiegsmethode, die vom Angular-Framework bei jeder unbehandelten Ausnahme aufgerufen wird.
3
if (error instanceof HttpErrorResponse) {
Nutzt Type-Narrowing zur Überprüfung, ob der Fehler aus einer nicht abgefangenen HTTP-Anfrage stammt.
4
if (error instanceof Error) {
Verzweigt den Ablauf für Standard-JavaScript-Error-Instanzen, um sicher auf Nachricht und Stacktrace zuzugreifen.