-5

次のコードがある場合

try {
    //some stuff here
catch (Exception e) {
    throw new CustomException();
} finally {
    finalize();
}

CustomExceptionチェック例外、

finallyのイベントでブロックが呼び出されExceptionますか?

編集:おそらく、「finalize()」という表現は不適切な選択でした。オブジェクトの finalize() メソッドを意味するものではありませんでした。実行する必要のあるクリーンアップ コードがあることを意味しました。申し訳ありません。

4

6 に答える 6

2

最後に、例外や return ステートメントに関係なく、常に呼び出されます。

そのドキュメントを確認することをお勧めします。

于 2013-10-31T15:18:17.687 に答える
1

finallyreturn;あなたが呼び出さない限り、常に呼び出されます(あなたが呼び出しても)

System.exit();

インtryまたはcatchブロックします。

于 2013-10-31T15:19:54.363 に答える
1

例外が発生した場合は常に呼び出されます。さらに言えば、それは常にピリオドと呼ばれます。それがそのためです。

于 2013-10-31T15:18:26.077 に答える
0

finally ブロックは、それぞれの場合に呼び出されます。

于 2013-10-31T15:18:31.990 に答える
0

finallyブロックは常に実行されます。ストリームを閉じるなど、例外がスローされても重要な操作を実行できるように設計されています。

于 2013-10-31T15:22:43.213 に答える
0

はい、finallyコードに到達する前にJVMが死ぬことを除けば、何が起こっても常に実行されます。この場合でも呼び出されます。

public boolean doSomething() throws Exception{
    boolean iDidIt = true;
    try{
        //attempt to do it
        return iDidIt;
    catch(Exception e){
        iDidIt = false;
        return iDidIt;
    } finally {
        System.out.println("Did something get done? "+iDidIt);
    }
}

print ステートメントは何があっても印刷されます。

于 2013-10-31T15:22:47.953 に答える