Error() コンストラクター
Baseline
広く利用可能
この機能は広く実装されており、多くのバージョンの端末やブラウザーで動作します。2015年7月以降、すべてのブラウザーで利用可能です。
Error() コンストラクターは Error オブジェクトを作成します。
構文
new Error()
new Error(message)
new Error(message, options)
new Error(message, fileName)
new Error(message, fileName, lineNumber)
Error()
Error(message)
Error(message, options)
Error(message, fileName)
Error(message, fileName, lineNumber)
メモ:
Error() は new があってもなくても呼び出せます。どちらも新しい Error のインスタンスを生成します。
引数
message省略可-
人間が読めるエラーの説明。
options省略可-
以下のプロパティを持つオブジェクトです。
fileName省略可-
このエラーを発生させたファイルのパスで
fileNameプロパティに反映されます。既定では、Error()コンストラクターを呼び出したコードを含むファイルの名前です。 lineNumber省略可-
このエラーを発生させたファイルの行番号で
lineNumberプロパティに反映されます。既定では、Error()コンストラクターの呼び出しを含む行番号です。
例
>関数呼び出しか new による構築か
Error が関数のように使用された場合 — new がなかった場合、 Error オブジェクトを返します。したがって、 Error を呼び出すだけで Error オブジェクトを new キーワードから構築した場合と同じものを出力します。
const x = Error("関数呼び出しによって生成されました。");
// 上記は以下と同じ機能を持つ
const y = new Error('"new" キーワードによって生成されました。');
原因とともに例外を再発生させる
場合によっては、例外を捕捉して、新しいメッセージとともに例外を再発生させることが有用であることがあります。
その場合、元のエラーを新しい Error のコンストラクターに渡すべきです。
try {
frameworkThatCanThrow();
} catch (err) {
throw new Error("New error message", { cause: err });
}
より詳細な例については、 Error > 類似するエラーと区別する をご覧ください。
options 引数の省略
JavaScriptは、options がオブジェクトの場合にのみ options.cause を読み取ろうとします。これによって、標準外の(第二引数に文字列を要求する) Error(message, fileName, lineNumber) という別のシグニチャとの曖昧さを避けます。options を省略するか、プリミティブ値を options として渡すか、 cause プロパティを持たないオブジェクトを渡した場合、生成された Error オブジェクトは cause プロパティを持たないでしょう。
// options を省略する
const error1 = new Error("Error message");
console.log("cause" in error1); // false
// プリミティブ値を渡す
const error2 = new Error("Error message", "");
console.log("cause" in error2); // false
// causeプロパティを持たないオブジェクトを渡す
const error3 = new Error("Error message", { details: "http error" });
console.log("cause" in error3); // false
仕様書
| 仕様書 |
|---|
| ECMAScript® 2027 Language Specification> # sec-error-constructor> |