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");」に該当する部分で後始末が行なわれていました。途中で実行時例外になっ