Курс Raku / Об’єкти, введення-виведення та винятки / Винятки
Фазер CATCH
Блок try зручний, але він розглядає весь блок як одне
ціле: або все спрацювало, або ні. Фазер CATCH дає тонше
керування — він дозволяє обробити виняток усередині того блоку,
де той стався, і вирішити, що робити.
CATCH є фазером, як і ті, з якими ви познайомилися в розділі про порядок виконання. Ви пишете
його будь-де всередині блоку; він виконується, лише якщо там кинуто
виняток. Виняток доступний як топік $_:
{
die 'Boom!';
CATCH {
default {
say 'Caught: ' ~ .message;
}
}
}
say 'after';Програма виводить:
Caught: Boom!
afterБлок default усередині CATCH обробляє
будь-який виняток. Щойно він виконався, виняток вважається обробленим,
тож програма не зупиняється — виконання триває після обгортального
блоку, через що й виводиться after.
Без CATCH die завершив би програму ще до
того, як можна було б дійти до after.
Практика
Виконайте 1 тест за змістом цієї теми.
Вправи
У цьому розділі 3 вправи. Перш ніж братися до практики, вивчіть усі теми розділу.