Курс Raku / Об’єкти, введення-виведення та винятки / Винятки
Перехоплення винятків за
допомогою try
Коли в програмі на Raku щось іде не так — бракує файлу, стається
явний die, — кидається виняток. За замовчуванням
неперехоплений виняток зупиняє програму. Блок try дозволяє
виконати код, який може зазнати невдачі, не обрушуючи програми.
Ви загортаєте ризикований код у блок try. Якщо всередині
кинуто виняток, блок на цьому зупиняється, але програма триває далі:
my $result = try {
die 'Boom!';
};
say "Still works";die перехоплює try, тож програма не падає —
вона одразу переходить до наступного оператора й виводить:
Still worksКоли блок зазнає невдачі отак, він обчислюється в невизначене
значення, тож $result є невизначеним:
say $result.defined; # FalseПерехоплений виняток зберігається в спеціальній змінній
$!. Звідти можна прочитати його повідомлення:
say $!.message; # Boom!Отже, try перетворює фатальну помилку на щось, що ваша
програма може дослідити й на що може відреагувати. Якщо блок виконується
без жодного винятку, $result містить його значення, а
$! є невизначеною.
Ще в цьому розділі
Практика
Виконайте 1 тест за змістом цього розділу.
Вправи
У цьому розділі 3 вправи. Перш ніж братися до практики, вивчіть усі теми розділу.