Курс по Raku / Обекти, вход-изход и изключения / Изключения / Обекти на изключения / Exercises / Съпоставете типа
Решение: Съпоставете типа
Ето едно възможно решение на задачата.
Код
{
my $x = 1 / 0;
say $x;
CATCH {
when X::Numeric::DivideByZero {
say 'cannot divide by zero';
}
}
}🦋 Намерете програмата във файла match-the-type.raku.
Изход
cannot divide by zeroКоментари
В Raku
1 / 0не гърми незабавно; той произвежда мързеливFailure. Изключението се хвърля едва когато използваме стойността — тук при опита да я подадем наsay.Хвърленото изключение е от вградения тип
X::Numeric::DivideByZero, аwhen X::Numeric::DivideByZeroго съпоставя точно. Съпоставянето по конкретен тип, вместо прихващането на всичко сdefault, ви позволява да обработвате различните грешки по различен начин.