Generator.prototype.throw()
throw() メソッドは、ジェネレーターの例外を、エラーを発生させることで再開し、 done と value の 2 つのプロパティを持ったオブジェクトを返します。
構文
gen.throw(exception)
引数
exception-
発生させる例外。デバッグ時には
instanceofErrorを行うと便利です。
返値
2 つのプロパティを持つ Object です。
done(boolean)-
- イテレーターが反復処理の末尾を過ぎている場合、値は
trueになります。この場合、valueはオプションでそのイテレーターの返値を指定します。 - イテレーターが反復処理の次の値を生成することができた場合、値は
falseになります。これはdoneプロパティを指定しない場合も同等です。
- イテレーターが反復処理の末尾を過ぎている場合、値は
value-
イテレーターが返す何らかの JavaScript の値です。
doneがtrueの場合は省略可能です。
例
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