while循环尝试块

时间:2012-09-01 07:37:44

标签: java while-loop

我试图在try / catch块中放入一个while循环。令我好奇的是,当while循环退出时,try catch不会被执行。有人可以解释实际发生的事情吗? 我试图google,但是找不到任何细节。

2 个答案:

答案 0 :(得分:5)

我假设您的代码如下所示:

try
{
    while (...)
    {
        // ...
    }
}
catch (FooException ex)
{
    // This only executes if a FooException is thrown.
}
finally
{
    // This executes whether or not there is an exception.
}

仅当存在异常时才执行catch块。无论是否抛出异常,finally块通常都会执行。所以你可能会发现你的finally块实际上正在被执行。您可以通过在那里放置一条导致控制台输出的输出线来证明这一点。

但是有些情况下finally块不会运行。有关详细信息,请参见此处:

答案 1 :(得分:1)

只有当您的程序使用System.exit()退出或者ErrorThrowable被抛出(而Exception将被捕获)时,才会发生这种情况。< / p>

尝试以下方法:

   public static void main(String[] args) {         
        try{
            System.out.println("START!");
            int i=0;
            while(true){
                i++;
                if(i > 10){
                    System.exit(1);
                }
            }
        }
        catch (Exception e) {
            // TODO: handle exception
        }
        finally{
            System.out.println("this will not be printed!");
        }
    }