Курс по Raku / Обекти, вход-изход и изключения / Изключения / Собствени изключения / Exercises / Два типа изключения
Решение: Два типа изключения
Ето едно възможно решение на задачата.
Код
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. Ето как един-единствен набор от обработващи реагира различно на различни видове грешки.