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及以上版本中,除了catch块外,还可以指定finally块。在finally块内的代码将始终在try和catch块之后被执行,无论是否已抛出异常,并且在正常执行恢复之前执行。
措辞表明您总是需要有一个catch块,但据我所见并没有明确说明。