PHP 5.5 и попробуйте... наконец
PHP 5.5 добавляет поддержку finally
в блоках try/catch.
Java позволяет вам создавать блок try/catch/finally без блока catch, поэтому вы можете локально выполнять очистку при возникновении исключения, но позволить самому исключению распространяться вверх по стеку вызовов, чтобы с ним можно было работать отдельно.
try {
// Do something that might throw an exception here
} finally {
// Do cleanup and let the exception propagate
}
В текущих версиях PHP вы можете добиться чего-то, что может очистить исключение и позволить ему распространиться, но если исключение не выдается, то код очистки никогда не вызывается.
try {
// Do something that might throw an exception here
} catch (Exception $e) {
// Do cleanup and rethrow
throw $e;
}
Будет ли PHP 5.5 поддерживать стиль try/finally? Я искал информацию по этому вопросу, но наиболее близкий к ответу из PHP.net ответ лишь подразумевает, что это не так.
В PHP 5.5 и более поздних, блок finally также может быть указан после блоков catch. Код в блоке finally всегда будет выполняться после блоков try и catch независимо от того, было ли выброшено исключение, и до возобновления нормального выполнения.
Формулировка предполагает, что от вас всегда ожидается блокировка улова, но, насколько я вижу, это не указано прямо.
2 ответа
Я реализовал тестовый пример на сервере 5.5RC3.
Как вы можете видеть в коде, он работает как положено. Документация действительно неверна на данный момент.