Error: cause
Error 例項的 cause 資料屬性表示錯誤的具體原始原因。
當捕獲並重新丟擲具有更具體或更有用錯誤訊息的錯誤時,會使用此屬性,以便仍然可以訪問原始錯誤。
值
傳遞給 options.cause 引數的 Error() 建構函式的值。它可能不存在。
Error: cause 的屬性特性 | |
|---|---|
| 可寫 | 是 |
| 可列舉 | 否 |
| 可配置 | 是 |
描述
cause 的值可以是任何型別。你不能假定你捕獲的錯誤有一個 Error 作為其 cause,就像你不能確定 catch 語句中繫結的變數也是一個 Error 一樣。下面的“提供結構化資料作為錯誤原因”示例展示了一個故意將非錯誤物件提供為原因的情況。
示例
使用 cause 重新丟擲錯誤
有時捕獲一個錯誤並用新訊息重新丟擲它會很有用。在這種情況下,你應該將原始錯誤傳遞給新 Error 的建構函式,如下所示。
js
try {
connectToDatabase();
} catch (err) {
throw new Error("Connecting to database failed.", { cause: err });
}
有關更詳細的示例,請參閱 Error > 區分相似錯誤。
提供結構化資料作為錯誤原因
為人類可讀而編寫的錯誤訊息可能不適合機器解析 — 因為它們可能會被重寫或標點符號更改,這可能會破壞任何現有的解析。因此,當從函式丟擲錯誤時,作為人類可讀錯誤訊息的替代方案,你可以改用結構化資料作為原因,供機器解析。
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…
}
規範
| 規範 |
|---|
| ECMAScript® 2026 語言規範 # sec-installerrorcause |
瀏覽器相容性
載入中…