Generator.prototype.throw()
The throw()
method resumes the
execution of a generator by throwing an error into it and returns an object with two
properties done
and value
.
Syntax
throw(exception)
Parameters
exception
-
The exception to throw. For debugging purposes, it is useful to make it an
instanceof
Error
.
Return value
An Object
with two properties:
done
-
A boolean value:
true
if the iterator is past the end of the iterated sequence. In this casevalue
optionally specifies the return value of the iterator.false
if the iterator was able to produce the next value in the sequence. This is equivalent to not specifying thedone
property altogether.
value
-
Any JavaScript value returned by the iterator. Can be omitted when
done
is true.
Examples
Using throw()
The following example shows a simple generator and an error that is thrown using the
throw
method. An error can be caught by a
try...catch
block as usual.
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 }
Specifications
Specification |
---|
ECMAScript Language Specification # sec-generator.prototype.throw |
Browser compatibility
BCD tables only load in the browser