2011-10-19 87 views

回答

6

是,

try/catch表达式的结果将是本trycatch块的最后一行,但finally块总会执行不管是什么

+0

即使'try'块中有明确的'return'语句? – Rogach

+2

是的。 [并且这些其他字符适合最小长度] –

+2

'finally'块不执行的唯一情况是''try'或'catch'块中调用'sys.exit()'时。 – axel22

1

是。

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