Курс Raku / Об’єкти,
введення-виведення та винятки / Винятки / Фазер
CATCH / Вправи /
Обробіть і
продовжте
Розв’язання: Обробіть і продовжте
Ось один із можливих варіантів розв’язання задачі.
Код
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усе одно обробляються.