在循环中使用try-finally块

时间:2018-02-08 09:31:33

标签: java while-loop break try-finally

我试图了解最终在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

2 个答案:

答案 0 :(得分:3)

虽然你break保证在尝试执行时总是最终执行。你最终不能停止进入控制。

https://docs.oracle.com/javase/tutorial/essential/exceptions/finally.html

  

当try块退出时,finally块始终执行。这确保即使发生意外异常也会执行finally块。但最终只有异常处理才有用 - 它允许程序员避免因返回,继续或中断而意外绕过清理代码。

行为有原因。它帮助了我们。

  

它允许程序员避免因返回,继续或中断而意外绕过清理代码。

答案 1 :(得分:0)

简而言之,无论你在finally内做什么来退出当前循环或函数,return都会被执行。这适用于任何breakcontinuetry以及几乎所有可以引导您进入任何地方的内容: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 被执行。