JavaScript Generator.throw() — кинути помилку всередину генератора
Метод throw() кидає помилку всередину генератора — у ту точку, де він зупинився на yield.
Загальний опис
Це рідкісна річ: помилка летить не назовні, а всередину. Генератор може її зловити своїм try...catch — і продовжити роботу, ніби нічого не сталося.
Таке потрібно, коли зовнішній код знає про проблему, а генератор знає, як її пережити: запит не вдався — пропускаємо цей елемент і йдемо далі.
Якщо генератор помилку не ловить, вона вилітає назовні, і генератор завершується.
автор: NagarD
Переглядачі
| Переглядач | ||||||
|---|---|---|---|---|---|---|
| throw | 39+ | 26+ | 10+ | 26+ | 13+ | - |
| Переглядач | ||||
|---|---|---|---|---|
| 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 — генератор живий
Коментарі
Коментарів ще немає — будьте першим!