php – 没有“终于”的编程
作者:互联网
我没有最终支持的所需PHP版本,所以我想知道是否:
try {
work();
} catch (Exception $e) {
cleanup();
throw $e;
}
cleanup();
与…完全相同
try {
work();
} finally {
cleanup();
}
解决方法:
finally块的要点是执行,无论try块中发生了什么,或者跟随catch案例.因此,如果你考虑一下,finally块中的代码可以在成功尝试块执行之后执行,也可以在抛出任何异常之后执行.因此,如果您像在解决方案中那样编写它,那么您确实完全模仿了这种情况.如果没有异常,则执行try / catch结构后的代码;如果有异常 – 任何异常 – 你也执行它.
我认为最终支持可能会拯救你的唯一情况是,你的版本本身不能,就是你实际上在早期中止外部执行堆栈.例如,如果此代码在函数内部并且您从try块中返回,则finally仍将执行,但在您的手动实现中它当然不能.
因此,如果你确保不提前离开,那么是的,它应该以同样的方式工作.
没有很多方法可以提前保留一个不抛出异常的函数;返回是最明显的,并且退出程序,退出,死亡或类似将是另一个.
标签:php,try-catch-finally 来源: https://codeday.me/bug/20190718/1491696.html