Generator.prototype.throw()

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

構文

gen.throw(exception)

引数

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

返値

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

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

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 }

仕様書

仕様書
ECMAScript (ECMA-262)
Generator.prototype.throw の定義

ブラウザーの互換性

Update compatibility data on GitHub
デスクトップモバイルサーバー
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeAndroid 版 FirefoxAndroid 版 OperaiOSのSafariSamsung InternetNode.js
throwChrome 完全対応 39Edge 完全対応 13Firefox 完全対応 26IE 未対応 なしOpera 完全対応 26Safari 完全対応 10WebView Android 完全対応 39Chrome Android 完全対応 39Firefox Android 完全対応 26Opera Android 完全対応 26Safari iOS 完全対応 10Samsung Internet Android 完全対応 4.0nodejs 完全対応 4.0.0
完全対応 4.0.0
完全対応 0.12
無効
無効 From version 0.12: this feature is behind the --harmony runtime flag.

凡例

完全対応  
完全対応
未対応  
未対応
ユーザーが明示的にこの機能を有効にしなければなりません。
ユーザーが明示的にこの機能を有効にしなければなりません。

関連情報