--- title: Generator.prototype.throw() slug: Web/JavaScript/Reference/Global_Objects/Generator/throw tags: - ECMAScript 2015 - Generator - JavaScript - Method - Prototype - Reference translation_of: Web/JavaScript/Reference/Global_Objects/Generator/throw ---
{{JSRef}}

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

構文

gen.throw(exception)

引数

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

返値

2つのプロパティを持つ {{jsxref("Global_Objects/Object", "Object")}} です。

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

throw() の使用

次の例では、簡単なジェネレーターと、 throwメソッドを用いて発生させるエラーを示します。エラーは通常 {{jsxref("Statements/try...catch", "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 }

仕様書

仕様書
{{SpecName('ESDraft', '#sec-generator.prototype.throw', 'Generator.prototype.throw')}}

ブラウザーの互換性

{{Compat("javascript.builtins.Generator.throw")}}

関連情報