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' в этой спецификации.
Живой стандарт  

Совместимость браузеров

BCD tables only load in the browser

Смотрите также