SuppressedError
Das SuppressedError
-Objekt repräsentiert einen Fehler, der beim Behandeln eines anderen Fehlers erzeugt wird. Es wird während der Ressourcenverwaltung mit using
oder await using
generiert.
Im Vergleich zu AggregateError
wird SuppressedError
verwendet, um einen einzelnen Fehler darzustellen, der durch einen anderen Fehler unterdrückt wird, während AggregateError
eine Liste von nicht zusammenhängenden Fehlern darstellt. Es ist jedoch möglich, dass ein SuppressedError
eine Kette von unterdrückten Fehlern enthält (e.suppressed.suppressed.suppressed...
). Es unterscheidet sich auch semantisch von cause
, da der Fehler nicht durch einen anderen Fehler verursacht wird, sondern auftritt, während ein anderer Fehler behandelt wird.
SuppressedError
ist eine Unterklasse von Error
.
Konstruktor
SuppressedError()
-
Erstellt ein neues
SuppressedError
-Objekt.
Instanz-Eigenschaften
Erbt auch Instanz-Eigenschaften von seinem Elternteil Error
.
Diese Eigenschaften sind auf SuppressedError.prototype
definiert und werden von allen SuppressedError
-Instanzen geteilt.
SuppressedError.prototype.constructor
-
Die Konstruktorfunktion, die das Instanzobjekt erstellt hat. Bei
SuppressedError
-Instanzen ist der Anfangswert derSuppressedError
-Konstruktor. SuppressedError.prototype.name
-
Repräsentiert den Namen des Fehlertyps. Für
SuppressedError.prototype.name
ist der Anfangswert"SuppressedError"
.
Hinweis:
SuppressedError
besitzt niemals die Eigenschaft cause
, da die Semantik von cause
mit suppressed
überlappt.
Diese Eigenschaften sind eigene Eigenschaften jeder SuppressedError
-Instanz.
error
-
Ein Verweis auf den Fehler, der zur Unterdrückung führt.
suppressed
-
Ein Verweis auf den Fehler, der durch
error
unterdrückt wird.
Instanz-Methoden
Erbt Instanz-Methoden von seinem Elternteil Error
.
Beispiele
Einen SuppressedError abfangen
Ein SuppressedError
wird ausgelöst, wenn ein Fehler während der Ressourcenverwaltung auftritt. Das Auslösen eines Fehlers verursacht das Bereinigen des Gültigkeitsbereichs, und jeder Disposer während der Bereinigung kann seinen eigenen Fehler auslösen. Alle diese Fehler werden in einer Kette von SuppressedError
-Instanzen gesammelt, wobei der ursprüngliche Fehler als suppressed
-Eigenschaft und der neue von dem nächsten Disposer geworfene Fehler als error
-Eigenschaft verwendet wird.
try {
using resource1 = {
[Symbol.dispose]() {
throw new Error("Error while disposing resource1");
},
};
using resource2 = {
[Symbol.dispose]() {
throw new Error("Error while disposing resource2");
},
};
throw new Error("Original error");
} catch (e) {
console.log(e instanceof SuppressedError); // true
console.log(e.message); // "An error was suppressed during disposal"
console.log(e.name); // "SuppressedError"
console.log(e.error); // Error: Error while disposing resource1
console.log(e.suppressed); // SuppressedError: An error was suppressed during disposal
console.log(e.suppressed.error); // Error: Error while disposing resource2
console.log(e.suppressed.suppressed); // Error: Original error
}
Die Kette sieht folgendermaßen aus:
SuppressedError --suppressed--> SuppressedError --suppressed--> Original error | | error error v v Error while disposing resource1 Error while disposing resource2 (Disposal happens later) (Disposal happens earlier)
Einen SuppressedError erstellen
try {
throw new SuppressedError(
new Error("New error"),
new Error("Original error"),
"Hello",
);
} catch (e) {
console.log(e instanceof SuppressedError); // true
console.log(e.message); // "Hello"
console.log(e.name); // "SuppressedError"
console.log(e.error); // Error: "New error"
console.log(e.suppressed); // Error: "Original error"
}
Spezifikationen
No specification found
No specification data found for javascript.builtins.SuppressedError
.
Check for problems with this page or contribute a missing spec_url
to mdn/browser-compat-data. Also make sure the specification is included in w3c/browser-specs.