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'; } }
Это надо помнить