JavaScript Generator.throw() — кинути помилку всередину генератора


Метод throw() кидає помилку всередину генератора — у ту точку, де він зупинився на yield.

автор: NagarD

Загальний опис

Це рідкісна річ: помилка летить не назовні, а всередину. Генератор може її зловити своїм try...catch — і продовжити роботу, ніби нічого не сталося.

Таке потрібно, коли зовнішній код знає про проблему, а генератор знає, як її пережити: запит не вдався — пропускаємо цей елемент і йдемо далі.

Якщо генератор помилку не ловить, вона вилітає назовні, і генератор завершується.

автор: NagarD

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE Microsoft Internet Explorer
throw 39+ 26+ 10+ 26+ 13+ -
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
throw 39+ yes yes 10+

Приклади

+ запропонувати свій приклад у пісочниці

Генератор ловить помилку ззовні й продовжує роботу.

function* worker() {
    while (true) {
        try {
            const task = yield;
            console.log('Виконано:', task);
        } catch (error) {
            // помилка прилетіла ЗЗОВНІ — але ми живі
            console.warn('Пропускаємо:', error.message);
        }
    }
}

const w = worker();
w.next();

w.next('завдання 1');                       // Виконано: завдання 1
w.throw(new Error('збій мережі'));          // Пропускаємо: збій мережі
w.next('завдання 2');                       // Виконано: завдання 2 — генератор живий
автор: NagarD

Коментарі

Коментарів ще немає — будьте першим!

Відповідь для

Увійдіть — коментар з'явиться одразу, без капчі й очікування перевірки.

Пропозиція правки

Ваша версія — : після перевірки замінить чинну. Нова порада чи нотатка — з'явиться на сторінці після перевірки.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія секції «»: після перевірки замінить чинну.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія опису «»: після перевірки замінить чинну.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Зворотний зв'язок
Вхід