Курс языка программирования Raku / Объекты, ввод-вывод и исключения / Исключения / Фазер CATCH / Exercises / Переживите цикл

Решение: Переживите цикл

Вот один из возможных вариантов решения задачи.

Код

for 1, 2, 3 -> $n {
    if $n == 2 {
        die "bad: $n";
    }
    say "ok: $n";

    CATCH {
        default {
            say "caught: " ~ .message;
        }
    }
}

🦋 Исходный код можно найти в файле survive-a-loop.raku.

Вывод

ok: 1
caught: bad: 2
ok: 3

Комментарии

  1. Фазер CATCH обрабатывает исключение, брошенное внутри тела цикла, поэтому die на второй итерации перехватывается, а не оказывается фатальным.

  2. Как только исключение обработано, цикл просто продолжается со следующим значением — вот почему ok: 3 всё же печатается.

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

Переживите цикл   |   Сообщите и восстановитесь