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.

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

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