使用 try-catch-finally 结构来检索数据库记录,似乎我需要在
try
块内返回一个值,以防万一一切正常(就像在出现异常的情况下,函数的结束并不意味着才能达到)。但是如果我返回到 try
内部,是否会到达 finally
代码(以关闭连接等)?
是的,
try/catch
表达式的结果将是try
或catch
块的最后一行,但finally
块将始终执行,无论发生什么
是的。
finally
的要点是确保执行一些清理代码,无论代码使用什么路径离开try
块。它发生在普通返回时、抛出并捕获异常时,以及抛出此 try
块未捕获的异常时。唯一阻止它运行的是程序根本无法离开 try
块;其中的无限循环,或者进程被某种阻止正常处理发生的方式杀死,或者类似的事情。我非常确定,即使您从 try
块内部退出进程,finally
块也会在进程实际终止之前执行。
来自文档:
如果在 try 或 the try 中遇到 return 语句 catch 块,finally 块仍然会被执行。