PHP 5.5在try / catch块中添加了对finally
的支持。
Java允许您创建一个没有catch块的try / catch / finally块,因此您可以在发生异常时在本地进行清理,但让异常本身在调用堆栈中向上传播,以便可以单独处理它。
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块 抓住积木。 finally块中的代码将始终执行 在try和catch块之后,无论是否有异常 被抛出,并在正常执行恢复之前。
措辞表明你总是被期望有一个陷阱,但就我所见,它并没有完全说出来。
答案 0 :(得分:9)
答案 1 :(得分:7)
我implemented a test case on a 5.5RC3 server。
正如您在代码中看到的,它按预期工作。此时文档确实是错误的。