【发布时间】:2014-05-01 02:28:41
【问题描述】:
PHP 5.5 已实现 finally 到 try-catch。我的疑问是:什么时候try-catch-finally 可能比我在try-catch 下方写的更有帮助?
例子,区别:
try { something(); }
catch(Exception $e) { other(); }
finally { another(); }
而不是,只是:
try { something(); }
catch(Exception $e) { other(); }
another();
可以发给我一些本案常见的例子吗?
注意事项:
- 我只谈论
try-catch-finally,而不是try-finally; - 有一些“功能”很酷,比如取消当前异常并最终抛出新的其他异常(我没试过,I read here)。我不知道没有
finally是否可以; - 像
notcatch这样的东西不是更有用吗?因此,如果try没有异常,我可以运行代码。呵呵
【问题讨论】:
-
无论是否发生异常都需要发生某些事情时。
-
finally块将总是被执行,而try-catch之后的普通代码可能不会,在从方法或类似方法返回的情况下。这使您可以清理任何必要的东西,例如资源使用情况。 -
@Vulcan 所以如果我这样做
try { return something(); } finally { other(); },other()会运行吗?如果我做finally { return other(); },会返回什么?有可能吗? -
@Vulcan 关于研究,我在 Google 和 SO 上做了很多工作,但我发现更多与 Java 相关,而且我喜欢了解 PHP。例如,Java 支持线程,最后似乎即使线程退出也能工作,类似的事情。我真的不知道Java。 :)
-
@DavidRodrigues
finally块中返回的值将是函数返回的实际值。
标签: php exception-handling try-catch-finally