SWT应用程序在应用程序退出之前清理资源的最佳方法是什么?我看到两个选择:
1)将DisposeListener添加到主窗口(或更好,添加到Display
)。如果发生未捕获的异常,它会被运行吗?
2)使用shutdown hook。有哪些问题要注意Design of the Shutdown Hooks API中没有提到的那些?
答案 0 :(得分:1)
如果发生未捕获的异常,您最终可能会遇到java.lang.RuntimeException: Widget disposed too early!
异常:
这通常是由其他一个例外引起的,特别是在关闭时,通常会在导致它们的异常之前列出“处于早期”错误。即。
- 工作台正在关闭
- 一部分是一个无法捕获的错误。
- 以下所有部分均未关闭,因此生成此错误
- 导致问题的错误渗透到顶部 堆叠并打印出来。
醇>
在您的情况下,我不确定它会如何影响您的侦听器,因此关闭挂钩可能是故障安全的,只要它仍然可以访问要处置的资源(可能并非总是如此)。