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® 2025 Language Specification
# sec-generator.prototype.throw

ブラウザーの互換性

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
throw

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support

関連情報