在循环中使用try-finally块

rem*_*rab 5 java break while-loop 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");
Run Code Online (Sandbox Code Playgroud)

输出是

in while
in finally
after while
Run Code Online (Sandbox Code Playgroud)

Sur*_*tta 5

尽管您break可以保证在尝试执行时总是最终执行。你不能停止进入最后的控制。

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

finally 块总是在 try 块退出时执行。这确保即使发生意外异常也能执行 finally 块。但 finally 不仅仅用于异常处理——它允许程序员避免通过 return、continue 或 break 意外绕过清理代码。

这种行为是有原因的。它帮助我们。

它允许程序员避免通过 return、continue 或 break 意外绕过清理代码。