在系统退出之前最后调用

时间:2016-04-03 14:29:43

标签: java

如果引发异常并且catch正在调用System.exit

,有人可以告诉我如何最终执行
try {   
} catch (Exception e) {
    System.exit(0);
} finally {
    System.out.println("closing the conn");
}

1 个答案:

答案 0 :(得分:0)

System.exit()通常永远不会返回,所以你不会在你编写的时候执行finally块中的代码。

你能做到的一种方法是注意你在catch块中有一个错误,然后在finally块中执行退出。

boolean error = false;

try {
   // bla bla blaa

} catch (Exception e) {
    error = true;
}
finally {
    if (error)  {
        System.exit(0);
    }
}

另一种方法是添加一个将在JVM退出时调用的关闭钩子。

Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() {
    @Override
    public void run() {
        System.out.println("Do your shutdown stuff here");
    }
}));

try {
    // bla bla blah     
} catch (Exception e) {
    System.exit(0);
} finally {
}