Я, вероятно, пропускаю что-то простое, но не ожидаю, что приведенный ниже код даст сбой.Он ведет себя так, как будто я написал die
вместо fail
в блоке catch.
Ошибка не обрабатывается должным образом, и код умирает.
sub foo()
{
try {
say 1 / 0;
CATCH { default { fail "FAIL" } }
}
return True;
}
with foo() {
say "done";
}
else
{
say "handled {.exception.message}"
}
Вывод:
FAIL
in block at d:\tmp\x.pl line 5
in any at d:\tmp\x.pl line 5
in sub foo at d:\tmp\x.pl line 4
in block <unit> at d:\tmp\x.pl line 11