Generator.prototype.throw()
Метод throw()
возобновляет выполнение тела генератора кидая внутри исключение и возвращает объект со свойствами done и value
.
Синтаксис
gen.throw(exception)
Параметры
exception
- Исключение, которое будет брошено. Во время отладки бывает полезно сделать его
instanceof
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 }
Спецификации
Specification | Status | Comment |
---|---|---|
ECMAScript 2015 (6th Edition, ECMA-262) Определение 'Generator.prototype.throw' в этой спецификации. |
Стандарт | Initial definition. |
ECMAScript (ECMA-262) Определение 'Generator.prototype.throw' в этой спецификации. |
Живой стандарт |
Совместимость браузеров
We're converting our compatibility data into a machine-readable JSON format.
This compatibility table still uses the old format,
because we haven't yet converted the data it contains.
Find out how you can help!
Feature | Chrome | Edge | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|---|
Basic support | (Да) | 13 | 26 (26) | Нет | (Да) | 10 |
Feature | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Basic support | 5.1 | (Да) | 26.0 (26) | ? | ? | 10 |