Курс по Raku / Обекти, вход-изход и изключения / Изключения / Фазерът CATCH / Exercises / Съобщете и се възстановете

Решение: Съобщете и се възстановете

Ето едно възможно решение на задачата.

Код

my $timeout = 30;

{
    die 'config missing';
    $timeout = 60;

    CATCH {
        default {
            say "warning: {.message}; keeping default";
        }
    }
}

say "timeout is $timeout seconds";

🦋 Намерете програмата във файла report-and-recover.raku.

Изход

warning: config missing; keeping default
timeout is 30 seconds

Коментари

  1. Когато die хвърли, остатъкът от блока се изоставя — така че редът $timeout = 60 изобщо не се изпълнява и $timeout запазва стойността си по подразбиране 30.

  2. CATCH обработва изключението (отпечатвайки предупреждение), така че програмата не спира. Тя продължава със стойността по подразбиране, а точно това означава възстановяване от грешка: отбележи проблема, върни се към нещо безопасно и продължи.

Навигация в курса

Съобщете и се възстановете   |   Тест — CATCH