Курс 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 |
Завелике →