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月.
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 |
Enable JavaScript to view this browser compatibility table.
This page was last modified on 2025年12月19日 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.