Generator.prototype.throw()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2016.
Метод throw()
возобновляет выполнение тела генератора кидая внутри исключение и возвращает объект со свойствами done и value
.
Синтаксис
gen.throw(exception)
Параметры
Возвращаемое значение
Объект с двумя свойствами:
-
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 }
Спецификации
Specification |
---|
ECMAScript Language Specification # sec-generator.prototype.throw |
Совместимость с браузерами
BCD tables only load in the browser