Курс языка программирования 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Комментарии
Фазер
CATCHобрабатывает исключение, брошенное внутри тела цикла, поэтомуdieна второй итерации перехватывается, а не оказывается фатальным.Как только исключение обработано, цикл просто продолжается со следующим значением — вот почему
ok: 3всё же печатается.