PHP 5.5并尝试......终于

时间:2013-06-20 08:31:11

标签: php exception exception-handling

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块之后,无论是否有异常   被抛出,并在正常执行恢复之前。

措辞表明你总是被期望有一个陷阱,但就我所见,它并没有完全说出来。

2 个答案:

答案 0 :(得分:9)

是的,支持try/finallyRFClive code)。文件确实不是很清楚,应该修改。

答案 1 :(得分:7)

implemented a test case on a 5.5RC3 server

正如您在代码中看到的,它按预期工作。此时文档确实是错误的。