我试图了解最终在while循环中使用的机制。 在下面的代码中。 在最后行打印,而不是在休息时间。我期待代码不会到达finally块。或者如果它到达finally块,那么没有中断那么while应该继续..有谁可以解释这是如何工作的?
while(true){
System.out.println("in while");
try{
break;
}finally{
System.out.println("in finally");
}
}
System.out.println("after while");
输出
in while
in finally
after while
答案 0 :(得分:3)
虽然你break
保证在尝试执行时总是最终执行。你最终不能停止进入控制。
https://docs.oracle.com/javase/tutorial/essential/exceptions/finally.html
当try块退出时,finally块始终执行。这确保即使发生意外异常也会执行finally块。但最终只有异常处理才有用 - 它允许程序员避免因返回,继续或中断而意外绕过清理代码。
行为有原因。它帮助了我们。
它允许程序员避免因返回,继续或中断而意外绕过清理代码。
答案 1 :(得分:0)
简而言之,无论你在finally
内做什么来退出当前循环或函数,return
都会被执行。这适用于任何break
,continue
,try
以及几乎所有可以引导您进入任何地方的内容:finally
可以(通常)仅通过finally
然而,有一些例外:正如OldCurmudgeon所说,System.exit()确实 - 在成功的情况下 - 不会让df = pd.DataFrame(data=[737098.4, 737098.5, 737098.6, 737098.7], columns=['matlab_datenum'])
df
matlab_datenum
0 737098.4
1 737098.5
2 737098.6
3 737098.7
被执行。