JavaScript

Generator.prototype.throw()メソッド

 編集:2022.07.28 by T.A.

ジェネレーターの例外を、エラーを発生させることで再開し、done と value の2つのプロパティを持ったオブジェクトを返します。

gen.throw(exception)
gen
exception 発生させる例外。デバッグ時には instanceof Error を行うと便利です。
戻り値

2つのプロパティを持つ Object です。

done [boolean]
イテレーターが反復処理の末尾を過ぎている場合、値は true になります。この場合、value はオプションでそのイテレーターの返値を指定します。

イテレーターが反復処理の次の値を生成することができた場合、値は false になります。これは done プロパティを指定しない場合も同等です。

value
イテレーターが返す何らかの JavaScript の値です。done が true の場合は省略可能です。
throw() の使用

次の例では、簡単なジェネレーターと、throwメソッドを用いて発生させるエラーを示します。エラーは通常 try...catch ブロックによって受け取られます。

//コンソールにて
function* gen() {
  while(true) {
    try {
       yield 42;
    } catch(e) {
      console.log('Error caught!');
    }
  }
}

const g = gen();
g.next();
// { value: 42, done: false }
g.throw(new Error('Something went wrong'));
// "Error caught!"
// { value: 42, done: false }

テスト