Runtime#addShutdownHook()
System.exit()が好きなコードですが、案の定、必要な後始末をせずにSystem.exit()してるじゃないか!と思ったら、ShutdownHookが仕込まれていた。
Runtime.getRuntime().addShutdownHook( new Thread() { public void run() { System.out.println("x"); } }); try { System.out.println("a"); System.exit( 0 ); System.out.println("b"); } finally { System.out.println("c"); }
実行結果です。"x"がちゃんと出力されています。
a x
コードでは、↑の「System.out.println("x");」に該当する部分で後始末が行なわれていました。途中で実行時例外になった場合もちゃんと呼び出されるみたいだし、一応大丈夫なのか・・。だが、むずい。