如果在' try '或' catch '块中有' return ',是否执行' finally '块



使用try-catch-finally结构来检索数据库记录,似乎我需要在try块内返回一个值,以防一切正常(如在异常情况下,函数的结束并不意味着要达到)。但是如果我在try内返回,是否会到达finally代码(关闭连接等)?

是,

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

可以。

finally的目的是确保一些清理代码被执行,无论这些代码使用什么路径离开try块。它发生在普通返回、抛出并捕获异常以及抛出未被try块捕获的异常时。唯一会阻止它运行的是,如果程序根本无法离开try块;它内部的一个无限循环,或者进程被某种方式杀死,阻止了正常的处理发生,或者类似的事情。我很确定,即使您从try块内部退出进程,finally块将在进程实际死亡之前执行。

最新更新