fo_*_*x86 5 java jvm exception-handling shutdown-hook
如果在java中执行关闭挂钩期间抛出未捕获的异常,jvm是否立即退出而不运行其余已注册的关闭挂钩(如果有)?来自javadocs:
通过调用线程的ThreadGroup对象的uncaughtException方法,可以在shutdown钩子中处理未捕获的异常,就像在任何其他线程中一样.此方法的默认实现将异常的堆栈跟踪打印到System.err并终止该线程; 它不会导致虚拟机退出或停止.
似乎其他关机钩子应该运行...
作为一个后续问题,拥有一段可能在关闭钩子中引发异常的代码可能不是一个好主意?如果你无法避免它,尝试捕获关闭钩子内的异常是一个好习惯吗?
由于addShutdownHook方法接受一个Thread,因此每个单独的shutdown钩子都是它自己的Thread.未捕获异常的默认行为是打印错误消息并终止线程.由于钩子具有相同的行为,因此以错误结尾的单个关闭钩子不应阻止其他钩子运行.
请注意,我实际上没有测试过这个......
| 归档时间: |
|
| 查看次数: |
1934 次 |
| 最近记录: |