Generator.prototype.throw() - JavaScript | MDN
Syntax
js
generatorInstance.throw(exception)
Parameters
Return value
If the thrown exception is caught by a try...catch and the generator resumes to yield more values, it will return an Object with two properties:
Exceptions
TypeError-
Thrown if the generator is already running.
If the exception is not caught by a try...catch within the generator function, it is also thrown to the caller of throw().
Description
The throw() method, when called, can be seen as if a throw exception; statement is inserted in the generator's body at the current suspended position, where exception is the exception passed to the throw() method. Therefore, in a typical flow, calling throw(exception) will cause the generator to throw. However, if the yield expression is wrapped in a try...catch block, the error may be caught and control flow can either resume after error handling, or exit gracefully.
Examples
Using throw()
The following example shows a generator and an error that is thrown using the throw method. An error can be caught by a try...catch block as usual.
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 }
Specifications
| Specification |
|---|
| ECMAScript® 2026 Language Specification # sec-generator.prototype.throw |