Курс по 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 все пак се отпечатва.

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

Оцелейте в цикъл   |   Съобщете и се възстановете