MDN’s new design is in Beta! A sneak peek: https://blog.mozilla.org/opendesign/mdns-new-design-beta/

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 Latest Draft (ECMA-262)
Определение 'Generator.prototype.throw' в этой спецификации.
Черновик  

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

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

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

Метки документа и участники

 Внесли вклад в эту страницу: deman
 Обновлялась последний раз: deman,