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

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

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

作成日: 更新日:

基本的な使い方

AsyncGenerator.prototype.throw()メソッドは、非同期ジェネレーターに外部からエラーを注入し、その実行フローを制御するメソッドです。非同期ジェネレーターは、複数の非同期処理をあたかも同期処理のように記述し、awaitキーワードを使用して逐次的に結果を生成する特別な関数です。このthrow()メソッドは、ジェネレーターが現在停止している箇所で、まるでその内部から例外がスローされたかのように、指定されたエラーを発生させます。

具体的には、generator.throw(error)のように呼び出されると、ジェネレーターの内部で指定されたerrorがスローされた状態となり、ジェネレーターの実行が再開されます。もしジェネレーターの内部でそのエラーがtry...catchブロックによって捕捉された場合、ジェネレーターはエラーハンドラーから処理を継続し、最終的には解決されたPromiseを返します。一方、ジェネレーターの内部でエラーが捕捉されなかった場合は、そのエラーによってジェネレーターは中断され、呼び出し元には拒否されたPromisePromise.reject(error))が返されます。

この機能は、非同期ジェネレーターの外部から特定の条件や異常事態を模擬的に発生させ、ジェネレーターがどのようにエラーを処理し、どのような結果を返すかをテストしたり、デバッグしたりする際に非常に有用です。例えば、データの取得中にネットワークエラーが発生した状況をシミュレートする際に活用できます。これにより、非同期処理を伴う複雑なロジックのエラーハンドリングを外部から効率的に検証することが可能となります。

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

構文(syntax)

1const asyncGenerator = (async function* () { /* 非同期ジェネレーターの処理 */ })();
2asyncGenerator.throw(new Error("エラーメッセージ"));

引数(parameters)

exception

  • exception: AsyncGeneratorにスローする例外オブジェクト。AsyncGeneratorがthrow()メソッドで受け取った例外を処理する際に使用されます。

戻り値(return)

Promise<IteratorResult>

AsyncGenerator.prototype.throw()メソッドは、AsyncGeneratorオブジェクトにエラーを投げ込み、その結果をPromiseでラップして返します。このPromiseは、イテレーターの次の要素または完了状態を示すIteratorResultオブジェクトを解決します。

関連コンテンツ