PHP: return в finally
4 марта 2020
function test()
{
try {
throw new \RuntimeException('try');
} catch (\RuntimeException $e) {
throw new \RuntimeException('catch');
}
finally {
return 'finally';
}
}
echo test();return в finally - штука опасная. Он тихо проигнорирует все исключения.



Комментарии RSS по email OK
Smarty :)
В этом же и смысл, finally игнорирует исключения в обоих ветках, иначе он был бы не нужен. Код был бы аналогичным
function test() { try { throw new \RuntimeException('try'); } catch (\RuntimeException $e) { throw new \RuntimeException('catch'); } return 'finally'; }а так получается
function test() { try { try { throw new \RuntimeException('try'); } catch (\RuntimeException $e) { throw new \RuntimeException('catch'); } } catch(\Throwable $e) { // вместо finally return 'finally'; } }Это надо помнить