编程语言
首页 > 编程语言> > php – 没有“终于”的编程

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