Курс по Raku / Обекти,
вход-изход и изключения / Изключения / Фазерът CATCH / Exercises / Обработете и
продължете
Решение: Обработете и продължете
Ето едно възможно решение на задачата.
Код
for <ok bad ok> -> $item {
{
die 'boom' if $item eq 'bad';
say "processed $item";
CATCH {
default {
say "skipped ($item): {.message}";
}
}
}
}🦋 Намерете програмата във файла handle-and-continue.raku.
Изход
processed ok
skipped (bad): boom
processed okКоментари
Фазерът
CATCHе вътре в блока за отделния елемент, така че обработваdieсамо за този един елемент. Понеже изключението е обработено там, то никога не се измъква, за да спре целия цикъл.Това е типичната употреба на
CATCHпредtry: провал в една итерация се решава на място, а цикълът продължава със следващия елемент. Средният елемент се проваля, но двата елементаokвсе пак се обработват.