javascript / intermediate
Snippet
Strukturierte Fehlerverkettung mit benutzerdefinierten Ausnahmeklassen
Benutzerdefinierte Fehlerklassen, die von `Error` erben, helfen bei der Kategorisierung von Anwendungsfehlern. Die Übergabe eines Optionsobjekts mit der Eigenschaft `cause` an `super()` erzeugt eine explizite Fehlerkette zur einfacheren Fehlersuche.
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 DatabaseError extends Error {constructor(message, cause) {super(message, { cause });this.name = 'DatabaseError';this.code = 'ERR_DB_QUERY_FAILED';}}function fetchUserRecord(userId) {try {throw new TypeError('Invalid connection pointer');} catch (rawErr) {throw new DatabaseError(`Could not load record for user ${userId}`, rawErr);}}try {fetchUserRecord(42);} catch (err) {console.error(`${err.name}: ${err.message}`);console.error(`Root cause: ${err.cause.message}`);}
nodejs
Erklärung
1
class DatabaseError extends Error {
Definiert eine domänenspezifische Ausnahmeklasse, die Eigenschaften des Error-Prototyps erbt.
2
super(message, { cause });
Ruft den Eltern-Konstruktor auf und registriert den ursprünglichen untergeordneten Fehler unter `.cause`.
3
console.error(`Root cause: ${err.cause.message}`);
Greift auf die verkettete Ursache der benutzerdefinierten Ausnahme zu.