Курс по Raku / Обекти, вход-изход и изключения / Изключения
Собствени изключения
Освен вградените изключения X::, можете да дефинирате и
свои собствени. Собственото изключение е клас, който наследява вградения
клас Exception и предоставя метод message:
class TooBig is Exception {
has $.value;
method message {
"Value $.value is too big";
}
}TooBig е нормален клас — може да има атрибути като
value, — но понеже е is Exception, той може да
бъде хвърлен. Хвърляте го, като създадете обект и извикате
.throw върху него:
my $value = 20 * 30;
TooBig.new(value => $value).throw if $value > 50;
CATCH {
when TooBig {
say .message;
}
}Програмата отпечатва:
Value 600 is too bigВътре в CATCH when TooBig съвпада, защото
хвърленият обект е от този тип. Собственото изключение носи каквито
данни му дадете (тук value), така че обработващият може да
изгради точно съобщение или да реагира по конкретен начин — далеч
по-полезно от обикновен низ, подаден на die.
Това събира всичко от тази част: собственото изключение е клас (с атрибути и метод), който участва в машинарията на изключенията, готов да сигнализира какво точно се е объркало.
Практика
Направете 1 тест върху съдържанието на тази тема.
Упражнения
Този раздел съдържа 3 упражнения. Разгледайте всички теми в раздела, преди да се захванете с практиката.
Навигация в курса
← Тест — fail |
Твърде голямо
→