Generator.prototype.throw()
Метод throw() возобновляет выполнение тела генератора кидая внутри исключение и возвращает объект со свойствами done и value.
Синтаксис
gen.throw(exception)
Параметры
exception-
Исключение, которое будет брошено. Во время отладки бывает полезно сделать его
instanceofError.
Возвращаемое значение
Объект с двумя свойствами:
done(boolean)- Имеет значение
trueесли iterator прошёл конец итерируемой последовательности. В этом случаеvalueопционально определяется выражением return value внутри итератора . - Имеет значение
falseесли iterator имеет возможность вернуть следующее значение последовательности. Это равносильно когда свойство done не указано.
- Имеет значение
value- любое JavaScript значение, возвращённое итератором. Может быть проигнорировано, когдаdone===true.
Примеры
Использование throw()
В этом примере показан простой генератор и исключение, которое выбрасывается используя метод throw. Исключение может быть поймано, используя, как обычно, блок try...catch.
js
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 }
Спецификации
| Specification |
|---|
| ECMAScript Language Specification # sec-generator.prototype.throw |
Совместимость браузеров
BCD tables only load in the browser