Get to know MDN better
このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。
この機能は広く実装されており、多くのバージョンの端末やブラウザーで動作します。2015年7月以降、すべてのブラウザーで利用可能です。
throw 文は、ユーザー定義の例外を発生させます。現在の関数の実行を停止し(throw の後の文は実行されません)、コールスタック内の最初の catch ブロックに制御を移します。呼び出し元の関数に catch ブロックが存在しない場合は、プログラムが終了します。
発生させる例外の式です。
throw 文は、文が使用できるすべてのコンテキストで有効です。その実行により例外が生成され、コールスタックを遡って伝播します。エラーの伝播と処理の詳細については、制御フローとエラー処理を参照してください。
throw キーワードの次の式は、下記のようにあらゆる種類の式を続けることができます。
実際には、投げられる例外は常に Error オブジェクト、または RangeError のような Error のサブクラスのインスタンスであるべきです。これは、例外を捕捉するコードが、捕捉された値に message などの特定のプロパティが存在することを期待する可能性があるためです。例えば、Web API は通常、Error.prototype を継承する DOMException インスタンスを投げます。
構文上、throwキーワードと投げられる式の間に改行文字を挿入することは禁止されています。
このコードは自動セミコロン挿入 (ASI) によって次のように変換されます。
これは無効なコードです。return とは異なり、throw は式が続かなければなりません。
この問題を防ぐには(ASI を防ぐには)、括弧で囲むことができます。
この例では、入力が期待される型でなかった場合に TypeError を発生する関数を定義する。
この例はコールバックベースの非同期関数を呼び出し、コールバックがエラーを受け取った場合に例外を発生させます。
この方法で発生するエラーは呼び出し側で捕捉できず、プログラムがクラッシュします。ただし、(a) readFile 関数自体がエラーを捕捉する場合、または (b) 最上位のエラーを捕捉するコンテキストでプログラムが実行されている場合を除きます。Promise() コンストラクターを使用することで、より自然なエラー処理が可能です。
| ECMAScript® 2027 Language Specification # sec-throw-statement |
ブラウザー互換性一覧表を表示するには、JavaScript を有効にしてください。
より良いインターネットのための青写真。
このコンテンツの一部は、©1998–2026 個人の mozilla.org 協力者です。コンテンツはクリエイティブ・コモンズ・ライセンスのもとで利用できます。