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