Курс языка программирования Raku / Объекты, ввод-вывод и исключения / Исключения / Перехват исключений с помощью try / Exercises / Перехватите ошибку

Решение: Перехватите ошибку

Вот один из возможных вариантов решения задачи.

Код

my $ok = try { 6 * 7 };
say $ok;

my $bad = try { die 'broken' };
say $bad.defined;
say $!.message;

🦋 Исходный код можно найти в файле catch-the-error.raku.

Вывод

42
False
broken

Комментарии

  1. Когда блок отрабатывает без ошибок, try просто вычисляется в значение блока, поэтому $ok содержит 42.

  2. die внутри второго блока бросает исключение, поэтому тот блок вычисляется в неопределённое значение и $bad.defined даёт False.

  3. Перехваченное исключение сохраняется в специальной переменной $!, а $!.message возвращает переданный ему текст — broken.

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

Перехватите ошибку   |   Когда всё идёт хорошо