Error() コンストラクター
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
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
省略可 非標準-
このエラーを発生させたファイルの行番号で
fileName
プロパティに反映されます。既定では、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
仕様書
Specification |
---|
ECMAScript® 2025 Language Specification # sec-error-constructor |
ブラウザーの互換性
BCD tables only load in the browser