Generator.prototype.throw()
Метод throw()
возобновляет выполнение тела генератора кидая внутри исключение и возвращает объект со свойствами done и value
.
Синтаксис
gen.throw(exception)
Параметры
Возвращаемое значение
Объект с двумя свойствами:
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