Курс языка программирования 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Комментарии
Когда блок отрабатывает без ошибок,
tryпросто вычисляется в значение блока, поэтому$okсодержит42.dieвнутри второго блока бросает исключение, поэтому тот блок вычисляется в неопределённое значение и$bad.definedдаётFalse.Перехваченное исключение сохраняется в специальной переменной
$!, а$!.messageвозвращает переданный ему текст —broken.