--- title: Generator.prototype.throw() slug: Web/JavaScript/Reference/Global_Objects/Generator/throw translation_of: Web/JavaScript/Reference/Global_Objects/Generator/throw ---
Метод throw() возобновляет выполнение тела генератора кидая внутри исключение и возвращает объект со свойствами done и value.
gen.throw(exception)
exceptioninstanceof {{jsxref("Error")}}.Объект с двумя свойствами:
done (boolean)
true если iterator прошёл конец итерируемой последовательности. В этом случае value опционально определяется выражением return value внутри итератора .false если iterator имеет возможность вернуть следующее значение последовательности. Это равносильно когда свойство done не указано.value - любое JavaScript значение, возвращённое итератором. Может быть проигнорировано, когда done === true.throw()В этом примере показан простой генератор и исключение, которое выбрасывается используя метод throw. Исключение может быть поймано, используя, как обычно, блок try...catch.
function* gen() {
while(true) {
try {
yield 42;
} catch(e) {
console.log('Error caught!');
}
}
}
var g = gen();
g.next();
// { value: 42, done: false }
g.throw(new Error('Something went wrong'));
// "Error caught!"
// { value: 42, done: false }
{{Compat}}