Курс Raku / Об’єкти, введення-виведення та винятки / Винятки / Перехоплення винятків за допомогою try

Тест — try

Що виведе наведена програма?

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

say 'outside';
1outside
0inside
0inside, а потім outside
0Boom!
0помилку

Тут стаються дві речі. По-перше, die негайно перериває решту блоку try, тож до рядка say 'inside' виконання ніколи не доходить — зсередини блоку нічого не виводиться. По-друге, оскільки try перехоплює виняток, сама програма не зупиняється: виконання триває далі за блоком, і say 'outside' спрацьовує звичайно. Тож єдиним виведеним рядком є outside. ($r була б невизначеною, а повідомлення Boom! чекало б у $!, якби ви туди зазирнули.)

Навігація курсом

Розв’язання: Спроба або значення за замовчуванням   |   Фазер CATCH