Курс языка программирования 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 |
Слишком
большое →