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

  1. Перехватите ошибку
  2. Когда всё идёт хорошо
  3. Попытка или значение по умолчанию

Навигация по курсу

Исключения   |   Не всякая ошибка возникает сразу