javascript / expert
Snippet
Polymorphie-basierte Fehler-Taxonomie mit Ursachenketten in Server-Interceptoren
Kombiniert OOP-Fehlervererbungshierarchien mit Pattern-Matching-Steuerfluss (`switch (true)`). Bietet robustes Fehler-Handling für Next.js-API-Interceptoren durch Erfassen von Stack-Traces und Standardisierung von Fehler-Antworten auf Basis polymorpher Fehlertypen.
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
export class ApplicationError extends Error {constructor(message, options) {super(message, options);this.name = this.constructor.name;Error.captureStackTrace?.(this, this.constructor);}}export class DatabaseTimeoutError extends ApplicationError {}export class AuthorizationFailedError extends ApplicationError {}export function handleRouteException(error) {switch (true) {case error instanceof DatabaseTimeoutError:return { status: 504, code: 'GATEWAY_TIMEOUT', detail: error.message };case error instanceof AuthorizationFailedError:return { status: 403, code: 'FORBIDDEN', detail: error.message };case error instanceof ApplicationError:return { status: 500, code: 'INTERNAL_APP_ERROR', detail: error.message };default:return { status: 500, code: 'UNKNOWN_FAILURE', detail: 'Unhandled system state' };}}
nextjs
Erklärung
1
export class ApplicationError extends Error {
Definiert eine benutzerdefinierte Basis-Fehlerklasse, die das native ES Error erweitert.
2
Error.captureStackTrace?.(this, this.constructor);
Bewahrt saubere V8-Stack-Traces unter Ausschluss des Konstruktor-Frames.
3
export class DatabaseTimeoutError extends ApplicationError {}
Erbt von ApplicationError und erstellt eine spezifische Domain-Exception.
4
switch (true) {
Verwendet ausdrucksbasierten Steuerfluss zur übersichtlichen Auswertung dynamischer Bedingungen.
5
case error instanceof DatabaseTimeoutError:
Macht polymorphes Pattern-Matching auf Laufzeitinstanzen bestimmter Fehlerklassen.