uk4*_*321 3 php try-catch-finally
我没有支持的所需PHP版本finally,所以我想知道是否:
try {
work();
} catch (Exception $e) {
cleanup();
throw $e;
}
cleanup();
Run Code Online (Sandbox Code Playgroud)
是完全相同一样
try {
work();
} finally {
cleanup();
}
Run Code Online (Sandbox Code Playgroud)
finally无论try块中发生了什么,或者在以下catch情况下,块的执行点都是执行的.因此,如果您考虑一下,finally块中的代码可以在成功try执行块之后执行,也可以在抛出任何异常之后执行.因此,如果您像在解决方案中那样编写它,那么您确实完全模仿了这种情况.如果没有异常,try/catch则执行结构后的代码; 如果有异常 - 任何异常 - 你也执行它.
我认为finally支持可能会拯救你的唯一情况是,你的版本本身不能,就是你实际上在早期中止外部执行堆栈.例如,如果此代码在函数内部并且您从try块中返回,那么finally仍然会执行,但在您的手动实现中它当然不能.
因此,如果您确保不提前离开,那么是的,它应该以相同的方式工作.
没有很多方法可以提前保留一个不抛出异常的函数; return是最明显的和中止的程序exit,die或类似的将是另一个.