Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【JavaScript ECMAScript】Generator::Generator.prototype.throwインスタンスメソッドの使い方

Generator.prototype.throw()インスタンスメソッドの使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

Generator.prototype.throw()メソッドは、ジェネレーターにエラーを注入し、その実行を中断または終了させるメソッドです。ジェネレーターは、yieldキーワードを使って実行を一時停止し、next()メソッドで再開できる特殊な関数です。このthrow()メソッドを呼び出すと、ジェネレーターが現在一時停止しているyield式がある場所で、引数として渡されたエラーが発生します。

この発生したエラーは、ジェネレーター関数内部に記述されたtry...catchブロックによって捕捉することが可能です。もしジェネレーター内部でエラーが捕捉された場合、ジェネレーターはエラー処理を続行し、その後のyield式から値を生成することができます。しかし、ジェネレーター内でエラーが捕捉されなかった場合は、ジェネレーターはその時点で実行を終了し、エラーはthrow()メソッドを呼び出した外部のコードに伝播します。

この機能は、外部からジェネレーターの内部ロジックに対して、意図的に例外的な状況を通知し、処理の流れを制御する際に役立ちます。例えば、ジェネレーターが期待する入力形式ではないデータを受け取った場合などに、外部からエラーをスローしてジェネレーターの処理を中断させるといった使い方が考えられます。

throw()メソッドは、ジェネレーター内部でエラーが捕捉された後にyieldされた値がある場合、{ value: 値, done: false }形式のオブジェクトを返します。ジェネレーターが完全に終了した場合は{ value: undefined, done: true }を返しますが、エラーが捕捉されずに外部に伝播した場合は、そのエラー自体をスローします。

公式リファレンス: Generator.prototype.throw()

構文(syntax)

1generatorInstance.throw(exception);

引数(parameters)

exception

  • exception: ジェネレーターに投げ込む例外オブジェクト。指定しない場合は undefined となる

戻り値(return)

{ value: any, done: boolean }

Generator.prototype.throw() メソッドは、ジェネレーターを中断させた後、例外を投げ込んで再開させます。このメソッドの戻り値は、 { value: any, done: boolean } という形式のオブジェクトで、ジェネレーターが throw 文によって再開された際の次の値 (value) と、ジェネレーターが終了したかどうか (done) を示します。

関連コンテンツ