Курс Raku / Об’єкти, введення-виведення та винятки / Винятки / Власні винятки / Вправи / Два типи винятків
Розв’язання: Два типи винятків
Ось один із можливих варіантів розв’язання задачі.
Код
class TooSmall is Exception {
method message { 'too small' }
}
class TooBig is Exception {
method message { 'too big' }
}
for TooSmall, TooBig -> $type {
{
$type.new.throw;
CATCH {
when TooSmall { say 'small' }
when TooBig { say 'big' }
}
}
}🦋 Вихідний код можна знайти у файлі two-exceptions.raku.
Вивід
small
bigКоментарі
Цикл кидає
TooSmallна першому проході йTooBigна другому, кожен усередині власного блоку з власнимCATCH.Фазер
CATCHмає гілкуwhenдля кожного типу винятку. На кожному проході виконується лише та гілка, що відповідає кинутому типу, — тож перший прохід виводитьsmall, а другийbig. Саме так один набір обробників по-різному реагує на різні роди помилок.