如果在 java 中执行关闭挂钩期间抛出未捕获的异常,jvm 是否会立即退出而不运行其余已注册的关闭挂钩(如果有)?从javadocs:
与在任何其他线程中一样,通过调用线程的 ThreadGroup 对象的 uncaughtException 方法,在关闭挂钩中处理未捕获的异常。此方法的默认实现将异常的堆栈跟踪打印到 System.err 并终止线程;它不会导致虚拟机退出或停止。
似乎其他关闭挂钩应该运行......
作为一个后续问题,拥有一段可能在关闭挂钩中引发异常的代码可能不是一个好主意?如果无法避免,尝试在关闭挂钩内捕获异常是一种好习惯吗?