使用try-catch-finally构造来检索数据库记录,似乎我需要在try
块内返回一个值,以防一切正常(如果异常结束时功能无意达成)。但如果我在try
内返回,是否会到达finally
代码(关闭连接等)?
答案 0 :(得分:6)
是,
try/catch
表达式的结果将是try
或catch
块的最后一行,但finally
块将始终执行,无论什么
答案 1 :(得分:1)
是
finally
的要点是确保执行某些清理代码,无论代码使用什么路径离开try
块。它发生在普通返回时,抛出并捕获异常时,以及抛出未被此try
块捕获的异常时。唯一阻止它运行的是程序无法完全离开try
块;在其中的无限循环,或通过某种方式杀死进程,以防止发生这种正常处理,或某种顺序。我很确定即使你从try
块内部退出进程,也会在进程实际死亡之前执行finally
块。