-1

try /catch ブロック内に while ループを入れようとしています。私の好奇心には、whileループが終了したときに最後にそのtry catchが実行されません。実際に何が起こっているのか説明できますか?グーグルで検索してみましたが、詳細は見つかりませんでした。

4

2 に答える 2

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 ブロックが実行されない状況があります。詳細については、こちらを参照してください。

于 2012-09-01T07:39:26.300 に答える
1

System.exit()プログラムがorを使用して終了したError場合にのみ発生する可能性がありますThrowable(vs.Exceptionそれはキャッチされます)。

次のことを試してください。

   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!");
        }
    }
于 2012-09-01T07:50:58.063 に答える