Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java While循环在try块中_Java_While Loop - Fatal编程技术网

Java While循环在try块中

Java While循环在try块中,java,while-loop,Java,While Loop,我试图在try/catch块中放置一个while循环。令我好奇的是,当while循环退出时,try-catch没有执行。有人能解释一下到底发生了什么吗? 我试图用谷歌搜索,但找不到任何详细信息。我假设您的代码如下所示: try { while (...) { // ... } } catch (FooException ex) { // This only executes if a FooException is thrown. } finall

我试图在try/catch块中放置一个while循环。令我好奇的是,当while循环退出时,try-catch没有执行。有人能解释一下到底发生了什么吗?
我试图用谷歌搜索,但找不到任何详细信息。

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

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块不会运行。有关更多详细信息,请参见此处:


只有当您的程序通过使用
System.exit()
退出,或者抛出
错误或
可丢弃的
时(与将捕获的
异常相比),才会发生这种情况

请尝试以下操作:

   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!");
        }
    }

请出示一些代码。根据JLS,您描述的不会发生。请向我们展示演示此行为的代码。(我猜你误解了什么…@StephenC是的,可以,看我的答案。是的。。。除此之外,还是破坏JVM。(我肯定这不是OP真正在说的!)听起来他指的是一个
最后
块,不是吗?@cheeken:好的,我明白你的意思。这个问题很难理解。他应该发布他的代码。这是我作为声明给出的。while循环完成执行后会发生什么?@Tinkerbel-在这种情况下,
finally
块将被执行。