Generator.prototype.throw()

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2016.

throw() メソッドは、ジェネレーターの例外を、エラーを発生させることで再開し、 donevalue の 2 つのプロパティを持ったオブジェクトを返します。

構文

gen.throw(exception)

引数

exception

発生させる例外。デバッグ時には instanceof Error を行うと便利です。

返値

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

done (boolean)

  • イテレーターが反復処理の末尾を過ぎている場合、値は true になります。この場合、 value はオプションでそのイテレーターの返値を指定します。
  • イテレーターが反復処理の次の値を生成することができた場合、値は false になります。これは done プロパティを指定しない場合も同等です。
value

イテレーターが返す何らかの JavaScript の値です。 donetrue の場合は省略可能です。

throw() の使用

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

js
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 }

仕様書

Specification
ECMAScript Language Specification
# sec-generator.prototype.throw

ブラウザーの互換性

BCD tables only load in the browser

関連情報