Get to know MDN better
このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。
This feature is well established and works across many devices and browser versions. It’s been available across browsers since 2015年7月.
* Some parts of this feature may have varying levels of support.
Error オブジェクトは、実行時エラーが発生した時に発生します。 Error オブジェクトは、ユーザー定義の例外の基底オブジェクトとして使用することもできます。標準の組み込みエラー型については下記を参照してください。
実行時エラーが発生すると、新しい Error オブジェクトが生成されスローされます。
Error はシリアライズ可能オブジェクトなので、 structuredClone() で複製したり、ワーカー間で postMessage() を使用してコピーしたりすることができます。
JavaScript には、一般的な Error コンストラクターの他に、中核となる他のエラーコンストラクターがあります。クライアント側の例外については、例外処理文を参照してください。
EvalErrorグローバル関数 eval() に関して発生するエラーを表すインスタンスを生成します。
RangeError数値変数または引数が、その有効範囲外である場合に発生するエラーを表すインスタンスを生成します。
ReferenceError不正な参照から参照先の値を取得した時に発生するエラーを表すインスタンスを生成します。
SyntaxError構文エラーを表すインスタンスを生成します。
TypeError変数または引数の型が有効でない場合に発生するエラーを表すインスタンスを生成します。
URIErrorencodeURI() または decodeURI() に不正な引数が渡された時に発生するエラーを表すインスタンスを生成します。
AggregateError処理から複数のエラーを報告する必要がある場合(例えば Promise.any())に複数のエラーを単一のオブジェクトとして表現するインスタンスを生成します。
InternalError"too much recursion" (深すぎる再帰) など、JavaScript エンジンで内部エラーが発生した時に発生するエラーを表すインスタンスを生成します。
新しい Error オブジェクトを生成します。
標準外の数値プロパティで、エラースタックトレースに含めるスタックフレームの数を制限します。
標準外の関数で、指定されたオブジェクトに stack プロパティを生成します。
Error.isError()引数がエラーならば true を返し、それ以外ならば false を返します。
Error.prepareStackTrace() 省略可標準外の関数で、発生した例外に対して JavaScript エンジンによって呼び出され、ユーザーがスタックトレースを独自に書式化することができるようにします。詳しくは V8 Stack Trace API のドキュメントを参照してください。
これらのプロパティは Error.prototype で定義されており、すべての Error インスタンスで共有されます。
Error.prototype.constructorこのインスタンスオブジェクトを作成したコンストラクター関数です。 Error インスタンスの場合、初期値は Error コンストラクターです。
Error.prototype.nameエラーの名称を表します。Error.prototype.name の場合、初期値は "Error" です。 TypeError や SyntaxError のようなサブクラスは各自の name プロパティを提供します。
Error.prototype.stackスタックトレースのための標準外のプロパティです。
これらのプロパティはそれぞれの Error インスタンス自身のプロパティです。
cause現在のエラーがなぜ発生したのかを示すエラーの原因。通常は捕捉した別のエラー。ユーザーが生成した Error オブジェクトでは、コンストラクターの第二引数で cause プロパティとして渡された値です」。
columnNumber標準外の Mozilla のプロパティで、このエラーが発生した行内の桁番号です。
fileName標準外の Mozilla のプロパティで、このエラーが発生したファイルへのパスです。
lineNumber標準外の Mozilla のプロパティで、このエラーが発生したファイル内の行番号です。
messageエラーメッセージ。ユーザーが作成した Error オブジェクトの場合、これはコンストラクターの最初の引数として渡される文字列です。
指定したオブジェクトを表す文字列を返します。Object.prototype.toString() メソッドを上書きします。
通常、 Error オブジェクトは throw キーワードを使って意図的にエラーを発生させるために作成します。 try...catch 構文を使用してエラーを処理してください。
instanceof でエラー型をテストすることにより、特定のエラー型だけを選んで処理できます。
異なる対処が必要な原因で失敗するにもかかわらず、コードブロックが非常によく似たエラー(すなわち同じ型やメッセージ)を投げることがあります。
発生した元のエラーが管理下にない場合、エラーを捕捉してより詳細なメッセージを持つ新しい Error オブジェクトを投げることが一つの選択肢となります。 元のエラーは新しい Error のコンストラクターの options パラメーターの cause プロパティに渡すべきです。これによって、上位の try/catch ブロックが元のエラーとスタックトレースを利用できることを保証します。
以下の例は、似たエラーで失敗する 2 つのメソッドを示しています(doFailSomeWay() と doFailAnotherWay())。
メモ: もしあなたがライブラリーを制作しているなら、利用者にエラーメッセージを解析するようお願いするよりも、発生したエラーを区別するために Error の cause を使用すべきです。例についてはエラーの cause ページを参照してください。
サブクラスのコンストラクターが super() を呼び出すときに options パラメーターを渡せば、独自のエラー型も cause プロパティを利用できます。基底クラスのコンストラクター Error() は options.cause を読み取って、新しいエラーのインスタンスに cause プロパティを定義します。
Error から派生した独自のエラー型を定義して throw new MyError() ができるようにし、instanceof MyError で例外ハンドラー内のエラーの種類を確認したいでしょう。これを行う一般的な方法の実例を以下に示します。
Stack Overflow の突っ込んだ議論、 "What's a good way to extend Error in JavaScript?" も参照してください。
警告: 組み込みのサブクラス化は、ES6 より古いコードに確実にトランスパイルできるわけではありません。なぜなら、 Reflect.construct() を使わずに特定の new.target を持つ基底クラスを構築する手段がないためです。追加の設定を行うか、コンストラクターの最後で Object.setPrototypeOf(this, CustomError.prototype) を手動で呼ぶ必要があります。そうしないと、構築されたインスタンスは CustomError のインスタンスになりません。詳しくは the TypeScript FAQ をご覧ください。
メモ: ES2015 クラスを使用した場合、一部のブラウザーはスタックトレース上に CustomError コンストラクターを含めます。
| ECMAScript® 2027 Language Specification # sec-error-objects |
Enable JavaScript to view this browser compatibility table.
This page was last modified on 2025年10月6日 by MDN contributors.
Your blueprint for a better internet.
Visit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.
Portions of this content are ©1998–2026 by individual mozilla.org contributors. Content available under a Creative Commons license.