【发布时间】:2012-11-26 01:37:36
【问题描述】:
如果在 java 中执行关闭挂钩期间抛出未捕获的异常,jvm 是否会立即退出而不运行其余已注册的关闭挂钩(如果有)?来自 javadocs:
未捕获的异常在关闭挂钩中处理,就像在任何其他 线程,通过调用线程的 uncaughtException 方法 线程组对象。此方法的默认实现打印 异常的堆栈跟踪到 System.err 并终止线程; 它不会导致虚拟机退出或停止。
似乎应该运行其他关闭挂钩...
作为一个后续问题,拥有一段可能在关闭挂钩中引发异常的代码可能不是一个好主意?如果无法避免,尝试在关闭钩子中捕获异常是一种好习惯吗?
【问题讨论】:
标签: java exception-handling jvm shutdown-hook