5
try {
    if (check) {
        while (true) ;
    } else {
        System.exit(1);
    }
} finally {
    clear();
}

Q:実行されない場合はありclear()ますか?個人的にはclear()が実行されないことはないと思います。

4

5 に答える 5

4

System.exit成功した場合、clear()は実行されません。ただし、例外System.exit(1) スローSecurityExceptionされる可能性があり、その場合clear()は実行されます。

于 2012-10-31T15:53:46.993 に答える
1

checkが true の場合、無限ループに陥っています。この場合、技術的には finally ブロックに到達することはありません。

Elsecheckが false の場合、System.exit(1);が実行され、プログラムが終了します。その場合、finally実行するブロックに到達することはありませんclear()

この例では、実際に到達することはできませんclear()

于 2012-10-31T15:52:53.827 に答える
0

clear は、try ブロックが完了したときにのみ実行されます。

が true の場合check、while(true) は永遠にそこに留まるため、try ブロックを離れることはありません

checkfalse の場合はSystem.exit(0)プログラムを終了するだけなので、finally ブロックも実行されません。ただし、最終的に呼び出される原因となるSystem.exit(int)a をスローできます。SecurityException

要約すると、System.exitスローした場合に呼び出すことができると思いますSecurityException

于 2012-10-31T15:54:24.740 に答える
0

clear() が実行されない場合はありますか?

あなたが与えた2つの例は、コードを実行することで確認できるケースです。

無限ループがある場合、その後は何も実行されません。

System.exit() が成功すると、すぐにスレッドを停止します。

于 2012-10-31T15:56:31.103 に答える
-1

System.exit(1) は、finally 句の実行を防ぎます。

基本的に、try または catch が正常に返されたか例外的に返されたかに関係なく、try/catch の後に finally ブロックが実行されます。

ただし、 System.exit は、ブロックがまったく戻るのを防ぎます。

ながら (真) ; 明らかに無期限にブロックします。while (true) ; と仮定しただけです。より意味のあるもののスタブでした:)

于 2012-10-31T15:56:39.213 に答える