javascript / expert
Snippet
Eigene Fehlerklassen mit erweiterter Anpassung des Stack-Traces
In der Experten-Fehlerbehandlung von Node.js erfordert das Erweitern nativer Error-Klassen die Aufrechterhaltung sauberer Stack-Traces und verketteter Ursachenreferenzen. Error.captureStackTrace(this, TargetConstructor) schließt Konstruktor-Frames aus dem Stack aus, um den Kontext für Telemetrie sauber zu halten. Die ES2022 cause-Option bewahrt Ursachen über Abstraktionsschichten hinweg.
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
class DomainError extends Error {constructor(message, options = {}) {super(message, options);this.name = this.constructor.name;this.timestamp = Date.now();Error.captureStackTrace(this, this.constructor);}}class ValidationFailedError extends DomainError {constructor(fields, cause) {super('Validation failed for target fields', { cause });this.fields = fields;}}try {throw new TypeError('Invalid string input format');} catch (err) {const domainErr = new ValidationFailedError(['username', 'email'], err);console.log(domainErr.name, domainErr.fields, domainErr.cause.message);}
nodejs
Erklärung
1
class DomainError extends Error {
Defines einen benutzerdefinierten Domänenfehler, der vom nativen V8-Error-Objekt erbt.
2
Error.captureStackTrace(this, this.constructor);
Schneidet den V8-Stack-Trace beim Konstruktoraufruf ab, um präzise Aufruforte zu melden.
3
super('Validation failed for target fields', { cause });
Nutzt die ES2022 Error-cause-Verkettung, um den zugrunde liegenden Diagnosefehler zu kapseln.