如果在`try`或`catch`块中有`return`的情况下执行`finally`块?

时间:2011-10-19 02:52:14

标签: scala exception-handling

使用try-catch-finally构造来检索数据库记录,似乎我需要在try块内返回一个值,以防一切正常(如果异常结束时功能无意达成)。但如果我在try内返回,是否会到达finally代码(关闭连接等)?

2 个答案:

答案 0 :(得分:6)

是,

try/catch表达式的结果将是trycatch块的最后一行,但finally块将始终执行,无论什么

答案 1 :(得分:1)

finally的要点是确保执行某些清理代码,无论代码使用什么路径离开try块。它发生在普通返回时,抛出并捕获异常时,以及抛出未被此try块捕获的异常时。唯一阻止它运行的是程序无法完全离开try块;在其中的无限循环,或通过某种方式杀死进程,以防止发生这种正常处理,或某种顺序。我很确定即使你从try块内部退出进程,也会在进程实际死亡之前执行finally块。