Курс языка программирования 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 упражнения. Прежде чем приступать к практике, изучите все темы раздела.