Курс Raku / Функційне, конкурентне, реактивне та веб-програмування / Реактивне програмування / await / Вправи / Дочекайтеся збою

Розв’язання: Дочекайтеся збою

Ось одне з можливих розв’язань задачі.

Код

my $p = start { die 'boom' };

try {
    await $p;
    CATCH {
        default { say "caught: {.message}" }
    }
}

🦋 Знайдіть програму у файлі await-failure.raku.

Вивід

caught: boom

Коментарі

  1. Блок обіцянки кидає виняток, тож обіцянку зламано. Виняток не втрачається — він тримається доти, доки хтось не дочекається обіцянки.

  2. await $p повторно кидає його просто там, де фазер CATCH обробляє його як будь-який звичайний виняток. Саме так помилки у фоновій роботі виринають там, де ви чекаєте на результат.

Навігація курсом

Дочекайтеся збою   |   Веб-програмування