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)

Параметры

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® 2025 Language Specification
# sec-generator.prototype.throw

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

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
throw

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support

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