[ Web Proxy ]
URL:
Viewing: https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Error/cause [Back]  [Original]

Fehler: cause - JavaScript | MDN

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

View in English Always switch to English

Fehler: cause

Baseline Weitgehend verfgbar

Diese Funktion ist gut etabliert und funktioniert auf vielen Gerten und in vielen Browserversionen. Sie ist seit September 2021 browserbergreifend verfgbar.

Die cause-Datenproperty einer Error-Instanz gibt die spezifische ursprngliche Ursache des Fehlers an.

Sie wird verwendet, wenn ein Fehler aufgefangen und mit einer spezifischeren oder ntzlicheren Fehlermeldung erneut geworfen wird, um weiterhin Zugang zum ursprnglichen Fehler zu haben.

In diesem Artikel

Wert

Der Wert, der im options.cause-Argument an den Error()-Konstruktor bergeben wurde. Er muss mglicherweise nicht vorhanden sein.

Eigenschaften von Fehler: cause
Schreibbarja
Aufzhlbarnein
Konfigurierbarja

Beschreibung

Der Wert von cause kann jeden Typ haben. Sie sollten nicht davon ausgehen, dass der von Ihnen abgefangene Fehler eine Error-Instanz als cause hat, ebenso wenig wie Sie sicher sein knnen, dass die im catch-Statement gebundene Variable eine Error 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 Unterklassen SuppressedError und AggregateError dienen beide dem Zweck, mehrere Fehler zu verknpfen. Sie reprsentieren beide mehrere Fehlerstellen: SuppressedError reprsentiert einen Fehler, der beim Umgang mit einem anderen Fehler auftrat, whrend AggregateError eine Sammlung von mehreren, nicht zusammenhngenden Fehlern reprsentiert, die whrend derselben Operation auftraten. Die cause-Eigenschaft reprsentiert eine einzelne Fehlerstelle, wobei der umschlossene Fehler nur Kontext zur Ursache hinzufgt und keinen zustzlichen Fehler darstellt.

Das folgende Beispiel zeigt die typische Verwendung von cause. Es gibt eine einzige Fehlerstelle, die innerhalb von mainLogic() entspringt. Die throw new Error()-Anweisung umhllt lediglich diesen ursprnglichen Fehler, um Kontext hinzuzufgen, und stellt keinen zustzlichen Fehler dar.

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

Das folgende Beispiel zeigt die typische Verwendung von SuppressedError. Es gibt zwei Fehlerstellen: eine innerhalb von mainLogic() und eine innerhalb von cleanup(). Die SuppressedError-Instanz verknpft 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 von AggregateError. Es gibt mehrere Fehlerstellen innerhalb von mainLogic(). Die AggregateError-Instanz verknpft 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 ntzlich sein, einen Fehler abzufangen und ihn mit einer neuen Nachricht erneut zu werfen. In diesem Fall sollten Sie den ursprnglichen Fehler in den Konstruktor fr den neuen Error bergeben, wie gezeigt.

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

Fr ein detaillierteres Beispiel siehe Error > Differenzieren zwischen hnlichen Fehlern.

Bereitstellung von strukturierten Daten als Fehlerursache

Fehlermeldungen, die fr den menschlichen Verbrauch geschrieben wurden, sind mglicherweise nicht geeignet fr die maschinelle Analyse da sie einer Umformulierung oder Zeichennderungen unterliegen knnen, die jede bestehende Analyse, die zur Verarbeitung gedacht ist, beeintrchtigen knnten. Deshalb knnen Sie, wenn Sie einen Fehler aus einer Funktion werfen, anstatt einer menschenlesbaren Fehlermeldung, alternativ die Ursache als strukturierte Daten bereitstellen, fr 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

Spezifikation
ECMAScript 2027 LanguageSpecification
# sec-installerrorcause

Browser-Kompatibilitt

Siehe auch


Web Proxy Viewer  |  New URL  |  Original Page