Курс языка программирования Raku / Объекты, ввод-вывод и исключения / Исключения
Объекты исключений
Исключение — это объект, как и всё остальное в Raku. Когда вы пишете
die 'something failed', Raku оборачивает ваше сообщение в
объект исключения типа X::AdHoc.
Внутри CATCH этот объект можно исследовать. Его тип даёт
.^name, а текст — .message:
{
die 'something failed';
CATCH {
default {
say .^name; # X::AdHoc
say .message; # something failed
}
}
}Знание типа позволяет обрабатывать разные ошибки по-разному. У
встроенных исключений Raku есть конкретные типы, имена которых
начинаются с X::, и их можно сопоставлять через
when — точно так же, как вы сопоставляли значения в блоке
given/when:
{
die 'something failed';
CATCH {
when X::AdHoc {
say 'an ad-hoc error: ' ~ .message;
}
default {
say 'some other error';
}
}
}Программа печатает an ad-hoc error: something failed,
потому что исключение совпало с типом X::AdHoc.
Сопоставление по типу — основа обработки конкретных ошибок, и на этой
идее строится раздел о собственных
исключениях.
Практика
Пройдите 1 тест по содержанию этой темы.
Упражнения
В этом разделе 3 упражнения. Прежде чем приступать к практике, изучите все темы раздела.
Навигация по курсу
← Тест — CATCH | Назовите
ошибку →