このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。

View in English Always switch to English

Error() コンストラクター

Baseline 広く利用可能

この機能は広く実装されており、多くのバージョンの端末やブラウザーで動作します。2015年7月以降、すべてのブラウザーで利用可能です。

Error() コンストラクターは Error オブジェクトを作成します。

構文

js
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 省略可

以下のプロパティを持つオブジェクトです。

cause 省略可

エラーの具体的な原因を示す値で cause プロパティに反映されます。エラーを捕捉して、より具体的または役立つエラーメッセージとともに例外を再度発生させるとき、元のエラーを渡すためにこのプロパティを使用できます。

fileName 省略可

このエラーを発生させたファイルのパスで fileName プロパティに反映されます。既定では、Error() コンストラクターを呼び出したコードを含むファイルの名前です。

lineNumber 省略可

このエラーを発生させたファイルの行番号で lineNumber プロパティに反映されます。既定では、Error() コンストラクターの呼び出しを含む行番号です。

関数呼び出しか new による構築か

Error が関数のように使用された場合 — new がなかった場合、 Error オブジェクトを返します。したがって、 Error を呼び出すだけで Error オブジェクトを new キーワードから構築した場合と同じものを出力します。

js
const x = Error("関数呼び出しによって生成されました。");

// 上記は以下と同じ機能を持つ
const y = new Error('"new" キーワードによって生成されました。');

原因とともに例外を再発生させる

場合によっては、例外を捕捉して、新しいメッセージとともに例外を再発生させることが有用であることがあります。 その場合、元のエラーを新しい Error のコンストラクターに渡すべきです。

js
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 プロパティを持たないでしょう。

js
// 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

ブラウザーの互換性

関連情報