Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten.Erfahre mehr über dieses Experiment.
SuppressedError
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
DasSuppressedError-Objekt repräsentiert einen Fehler, der während der Behandlung eines anderen Fehlers erzeugt wurde. Es wird bei der Freigabe von Ressourcen mittelsusing oderawait using erzeugt.
Im Vergleich zuAggregateError wirdSuppressedError verwendet, um einen einzelnen Fehler darzustellen, der durch einen anderen Fehler unterdrückt wird, währendAggregateError eine Liste von nicht zusammenhängenden Fehlern darstellt. Es ist jedoch möglich, dass einSuppressedError eine Kette von unterdrückten Fehlern enthält (e.suppressed.suppressed.suppressed...). Es unterscheidet sich auch semantisch voncause, da der Fehler nichtdurch einen anderen Fehler verursacht wird, sondernauftritt, wenn ein anderer Fehler gehandhabt wird.
SuppressedError ist eine Unterklasse vonError.
In diesem Artikel
Konstruktor
SuppressedError()Erstellt ein neues
SuppressedError-Objekt.
Instanz-Eigenschaften
Erbt auch Instanz-Eigenschaften von seinem ElternteilError.
Diese Eigenschaften sind aufSuppressedError.prototype definiert und werden von allenSuppressedError-Instanzen geteilt.
SuppressedError.prototype.constructorDie Konstruktorfunktion, die das Instanzobjekt erstellt hat. Für
SuppressedError-Instanzen ist der anfängliche Wert derSuppressedError-Konstruktor.SuppressedError.prototype.nameRepräsentiert den Namen für den Fehlertyp. Für
SuppressedError.prototype.nameist der Anfangswert"SuppressedError".
Hinweis:SuppressedError hat niemals diecause-Eigenschaft, da sich die Bedeutung voncause mitsuppressed überschneidet.
Diese Eigenschaften sind eigene Eigenschaften jederSuppressedError-Instanz.
errorEin Verweis auf den Fehler, der zur Unterdrückung führt.
suppressedEin Verweis auf den Fehler, der durch
errorunterdrückt wird.
Instanz-Methoden
Erbt Instanz-Methoden von seinem ElternteilError.
Beispiele
>Abfangen eines SuppressedError
EinSuppressedError wird ausgelöst, wenn während derRessourcenfreigabe ein Fehler auftritt. Das Auslösen eines Fehlers bewirkt die Bereinigung des Geltungsbereichs, und jeder Disposer während der Bereinigung kann seinen eigenen Fehler auslösen. All diese Fehler werden in eine Kette vonSuppressedError-Instanzen gesammelt, wobei der ursprüngliche Fehler alssuppressed-Eigenschaft und der neue Fehler, der vom nächsten Disposer ausgelöst wird, alserror-Eigenschaft fungiert.
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 so aus:
SuppressedError --suppressed--> SuppressedError --suppressed--> Original error | | error error v vError while disposing resource1 Error while disposing resource2 (Disposal happens later) (Disposal happens earlier)
Erstellen eines SuppressedError
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
| Specification |
|---|
| ECMAScript Async Explicit Resource Management> # sec-suppressederror-objects> |