Error: cause
Die cause
Daten-Eigenschaft einer Error
Instanz zeigt die spezifische ursprüngliche Ursache des Fehlers an.
Sie wird verwendet, wenn ein Fehler abgefangen und mit einer spezifischeren oder nützlicheren Fehlermeldung erneut geworfen wird, um weiterhin Zugriff auf den ursprünglichen Fehler zu haben.
Wert
Der Wert, der dem Error()
Konstruktor im options.cause
Argument übergeben wurde. Er könnte eventuell nicht vorhanden sein.
Eigenschaften der Error: cause -Property |
|
---|---|
Schreibbar | ja |
Aufzählbar | nein |
Konfigurierbar | ja |
Beschreibung
Der Wert von cause
kann von jedem Typ sein. Sie sollten nicht davon ausgehen, dass der abgefangene Fehler eine Error
als cause
hat, genauso wie Sie nicht sicher sein können, dass die im catch
-Statement gebundene Variable ein Error
ist. Das untenstehende Beispiel "Bereitstellung strukturierter Daten als Fehlerursache" zeigt einen Fall, in dem absichtlich keine Fehlermeldung als Ursache angegeben wird.
Beispiele
Einen Fehler mit einer Ursache erneut werfen
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 neuen Error
übergeben, wie gezeigt.
try {
connectToDatabase();
} catch (err) {
throw new Error("Connecting to database failed.", { cause: err });
}
Für ein detaillierteres Beispiel siehe Error > Differenzierung zwischen ähnlichen Fehlern.
Strukturierte Daten als Fehlerursache bereitstellen
Fehlermeldungen, die für den menschlichen Gebrauch geschrieben wurden, sind möglicherweise nicht geeignet für maschinelles Parsen — da sie umformuliert oder die Zeichensetzung geändert werden könnte, was bestehende Parsing-Mechanismen stören könnte. Daher können Sie beim Werfen eines Fehlers von einer Funktion, als Alternative zu einer für Menschen lesbaren Fehlermeldung, die Ursache als strukturierte Daten bereitstellen, um ein maschinelles Parsen zu ermöglichen.
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 Language Specification # sec-installerrorcause |
Browser-Kompatibilität
BCD tables only load in the browser