--- 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)
exception
instanceof
{{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}}