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

Тест — try

Что выведет следующая программа?

my $r = try {
    die 'Boom!';
    say 'inside';
};

say 'outside';
1outside
0inside
0сначала inside, потом outside
0Boom!
0ошибка

Здесь происходит две вещи. Во-первых, die немедленно прерывает остаток блока try, поэтому до строки say 'inside' дело не доходит — изнутри блока ничего не печатается. Во-вторых, поскольку try перехватывает исключение, сама программа не останавливается: выполнение продолжается за блоком, и say 'outside' отрабатывает как обычно. Значит, печатается единственная строка — outside. ($r был бы не определён, а сообщение Boom! дожидалось бы в $!, если бы вы туда заглянули.)

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

Решение: Попытка или значение по умолчанию   |   Фазер CATCH