0

try ブロックまたは catch ブロック内の return ステートメントの場合、finally ブロックが最後に実行されるプログラムを開発しましたが、この場合、try ブロック内に system.exit を書き込むと、finally ブロックは実行されませんが、それでも実行したい、Runtime.getRuntime().addShutdownHooksystem.exit が呼び出された場合でも、どのような場合でも実行する必要があるコードを追加する必要があります。アドバイスしてください、以下は私のクラスです

public class Hello {
    public static void hello(){
        try{
            System.out.println("hi");
            System.exit(1);
           // return;

            }catch(RuntimeException e)
            {       //return;
        }
        finally{
            System.out.println("finally is still executed at last");
        }
    }
    public static void main(String[] args){
        Hello.hello();
    }
}
4

2 に答える 2

1

1) 通常、終了後に何らかのコードを実行する場合は、シャットダウン フックが必要です。

public static void main(String[] args) throws Exception {
    Runtime.getRuntime().addShutdownHook(new Thread() {
        @Override
        public void run() {
            System.out.println("bye");
        }
    });
    hello();
}

2) この具体的なケースでは、シャットダウン フックは必要ありません。コードから exit を削除するだけです。

public static void hello() {
    try{
        System.out.println("hi");
    } catch (RuntimeException e) {
        //
    } finally{
        System.out.println("finally is still executed at last");
    }
}
于 2013-03-07T06:01:24.053 に答える
0

System.exit(1)を呼び出すとき

プログラムを終了し、JVMはプログラムの実行を強制的に停止します。

では、終了後にコードを実行したいのに、なぜSystem.exit(1)を使用するのでしょうか。

yout tryブロック内で何らかの条件を適用して、tryブロックを終了するだけです。これにより、すべての場合にfinnalyブロックが発生します。

于 2013-03-07T06:03:06.907 に答える