Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

SuppressedError

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

Das SuppressedError Objekt repräsentiert einen Fehler, der beim Handhaben eines anderen Fehlers entsteht. Es wird während der Ressourcenfreigabe mit using oder await using erzeugt.

Im Vergleich zu AggregateError steht SuppressedError für einen Fehler, der beim Umgang mit einem anderen Fehler auftritt, 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, wenn ein anderer Fehler gehandhabt 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. Für SuppressedError Instanzen ist der Anfangswert der SuppressedError Konstruktor.

SuppressedError.prototype.name

Repräsentiert den Namen des Fehlertyps. Für SuppressedError.prototype.name ist der Anfangswert "SuppressedError".

Hinweis: SuppressedError hat niemals die cause Eigenschaft, weil die Semantik von cause sich mit suppressed überschneidet.

Diese Eigenschaften sind eigene Eigenschaften jeder SuppressedError Instanz.

error

Eine Referenz auf den Fehler, der zur Unterdrückung führt.

suppressed

Eine Referenz auf den Fehler, der durch error unterdrückt wird.

Instanz-Methoden

Erbt Instanz-Methoden von seinem Elternteil Error.

Beispiele

Auffangen eines SuppressedError

Ein SuppressedError wird ausgelöst, wenn ein Fehler während der Ressourcenfreigabe auftritt. Das Auslösen eines Fehlers verursacht eine Bereichsbereinigung, und jeder Putzer während der Bereinigung kann seinen eigenen Fehler werfen. All diese Fehler werden in eine Kette von SuppressedError Instanzen gesammelt, wobei der ursprüngliche Fehler als suppressed Eigenschaft und der neue Fehler, der vom nächsten Putzer geworfen wird, als error Eigenschaft dargestellt wird.

js
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                               v
Error while disposing resource1   Error while disposing resource2
    (Disposal happens later)        (Disposal happens earlier)

Erstellen eines SuppressedError

js
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

Browser-Kompatibilität

Siehe auch