Movatterモバイル変換


[0]ホーム

URL:


  1. Web
  2. JavaScript
  3. JavaScript-Referenz
  4. Eingebaute Standardobjekte
  5. Fehler
  6. cause

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

View in EnglishAlways switch to English

Fehler: cause

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2021.

Diecause-Datenproperty einerError-Instanz gibt die spezifische ursprüngliche Ursache des Fehlers an.

Sie wird verwendet, wenn ein Fehler aufgefangen und mit einer spezifischeren oder nützlicheren Fehlermeldung erneut geworfen wird, um weiterhin Zugang zum ursprünglichen Fehler zu haben.

Wert

Der Wert, der imoptions.cause-Argument an denError()-Konstruktor übergeben wurde. Er muss möglicherweise nicht vorhanden sein.

Eigenschaften vonFehler: cause
Schreibbarja
Aufzählbarnein
Konfigurierbarja

Beschreibung

Der Wert voncause kann jeden Typ haben. Sie sollten nicht davon ausgehen, dass der von Ihnen abgefangene Fehler eineError-Instanz alscause hat, ebenso wenig wie Sie sicher sein können, dass die imcatch-Statement gebundene Variable eineError ist. Das unten stehende Beispiel "Bereitstellung von strukturierten Daten als Fehlerursache" zeigt einen Fall, in dem absichtlich eine Nicht-Fehlermeldung als Ursache angegeben wird.

Die UnterklassenSuppressedError undAggregateError dienen beide dem Zweck, mehrere Fehler zu verknüpfen. Sie repräsentieren beide mehrere Fehlerstellen:SuppressedError repräsentiert einen Fehler, der beim Umgang mit einem anderen Fehler auftrat, währendAggregateError eine Sammlung von mehreren, nicht zusammenhängenden Fehlern repräsentiert, die während derselben Operation auftraten. Diecause-Eigenschaft repräsentiert eine einzelne Fehlerstelle, wobei der umschlossene Fehler nur Kontext zur Ursache hinzufügt und keinen zusätzlichen Fehler darstellt.

Das folgende Beispiel zeigt die typische Verwendung voncause. Es gibt eine einzige Fehlerstelle, die innerhalb vonmainLogic() entspringt. Diethrow new Error()-Anweisung umhüllt lediglich diesen ursprünglichen Fehler, um Kontext hinzuzufügen, und stellt keinen zusätzlichen Fehler dar.

js
try {  mainLogic();} catch (err) {  throw new Error("Main logic failed", { cause: err });}

Das folgende Beispiel zeigt die typische Verwendung vonSuppressedError. Es gibt zwei Fehlerstellen: eine innerhalb vonmainLogic() und eine innerhalb voncleanup(). DieSuppressedError-Instanz verknüpft die zwei Fehler.

js
try {  mainLogic();} catch (primaryError) {  try {    cleanup();  } catch (cleanupError) {    throw new SuppressedError(      cleanupError,      primaryError,      "Main logic failed; while handling that, cleanup also failed",    );  }}

Das folgende Beispiel zeigt die typische Verwendung vonAggregateError. Es gibt mehrere Fehlerstellen innerhalb vonmainLogic(). DieAggregateError-Instanz verknüpft alle Fehler.

js
function mainLogic() {  const errors = [];  try {    operation1();  } catch (e1) {    errors.push(e1);  }  try {    operation2();  } catch (e2) {    errors.push(e2);  }  if (errors.length > 0) {    throw new AggregateError(errors, "Multiple operations failed");  }}

Beispiele

Erneutes Werfen eines Fehlers mit einer Ursache

Es kann manchmal nützlich sein, einen Fehler abzufangen und ihn mit einer neuen Nachricht erneut zu werfen.In diesem Fall sollten Sie den ursprünglichen Fehler in den Konstruktor für den neuenError übergeben, wie gezeigt.

js
try {  connectToDatabase();} catch (err) {  throw new Error("Connecting to database failed.", { cause: err });}

Für ein detaillierteres Beispiel sieheError > Differenzieren zwischen ähnlichen Fehlern.

Bereitstellung von strukturierten Daten als Fehlerursache

Fehlermeldungen, die für den menschlichen Verbrauch geschrieben wurden, sind möglicherweise nicht geeignet für die maschinelle Analyse — da sie einer Umformulierung oder Zeichenänderungen unterliegen können, die jede bestehende Analyse, die zur Verarbeitung gedacht ist, beeinträchtigen könnten. Deshalb können Sie, wenn Sie einen Fehler aus einer Funktion werfen, anstatt einer menschenlesbaren Fehlermeldung, alternativ die Ursache als strukturierte Daten bereitstellen, für die maschinelle Analyse.

js
function makeRSA(p, q) {  if (!Number.isInteger(p) || !Number.isInteger(q)) {    throw new Error("RSA key generation requires integer inputs.", {      cause: { code: "NonInteger", values: [p, q] },    });  }  if (!areCoprime(p, q)) {    throw new Error("RSA key generation requires two co-prime integers.", {      cause: { code: "NonCoprime", values: [p, q] },    });  }  // rsa algorithm…}

Spezifikationen

Specification
ECMAScript® 2026 Language Specification
# sec-installerrorcause

Browser-Kompatibilität

Siehe auch

Help improve MDN

Learn how to contribute Diese Seite wurde automatisch aus dem Englischen übersetzt.

[8]ページ先頭

©2009-2026 Movatter.jp