我在Java中有一个相当复杂的关闭问题 - 有很多清理工作要做。 特别是,我正在尝试弄清楚如何从shutdown hook线程进行错误处理。 我目前的代码包括以下内容:
try {
return shutdownPromise = doShutdown();
}
catch (Throwable exc) {
logger.error("An exception was thrown while shutting down the application.", exc);
System.exit(1);
return null;
}
当我最初写这篇文章时,我的想法是,在关闭时发生错误应该直接进入exit
。但是exit
并不是如此低级别的操作;它会调用关机挂钩。
因此,我思考了以下问题 -
- 从关机挂钩中调用exit会发生什么?
- 在关机挂钩中正确处理错误的方法是什么?