SWT:在申请退出前清理

时间:2010-05-03 18:52:34

标签: java swt

SWT应用程序在应用程序退出之前清理资源的最佳方法是什么?我看到两个选择:

1)将DisposeListener添加到主窗口(或更好,添加到Display)。如果发生未捕获的异常,它会被运行吗?

2)使用shutdown hook。有哪些问题要注意Design of the Shutdown Hooks API中没有提到的那些?

1 个答案:

答案 0 :(得分:1)

如果发生未捕获的异常,您最终可能会遇到java.lang.RuntimeException: Widget disposed too early!异常:

  

这通常是由其他一个例外引起的,特别是在关闭时,通常会在导致它们的异常之前列出“处于早期”错误。即。

     
      
  1. 工作台正在关闭
  2.   
  3. 一部分是一个无法捕获的错误。
  4.   
  5. 以下所有部分均未关闭,因此生成此错误
  6.   
  7. 导致问题的错误渗透到顶部   堆叠并打印出来。
  8.   

在您的情况下,我不确定它会如何影响您的侦听器,因此关闭挂钩可能是故障安全的,只要它仍然可以访问要处置的资源(可能并非总是如此)。