2010-05-03 2 views
2

Каков наилучший способ для приложения SWT очистить ресурсы до выхода приложения? Я вижу два варианта:SWT: очистка до выхода приложения

1) Добавить DisposeListener в главное окно (или лучше, на Display). Будет ли он запущен, если произойдет неперехваченное исключение?

2) Используйте shutdown hook. Любые проблемы, которые необходимо знать о них, которые не упомянуты в Design of the Shutdown Hooks API?

ответ

1

Если неперехваченное исключение произойдет, вы можете закончить с java.lang.RuntimeException: Widget disposed too early! исключением:

Это обычно вызвано одной из других исключений, особенно на близких, и часто раз «расположенный в начале» ошибки перечисленных перед исключением, вызвавшим их. т.е.

  1. верстак закрытия
  2. одна часть thows ошибку, которая не может быть пойманной.
  3. все следующие части не закрыты, и поэтому сгенерируйте эту ошибку
  4. ошибка, которая вызывает проблему, просачивается вверх в начало стека и распечатывается.

В вашем случае, я не знаю, как это будет влиять на ваш слушатель, поэтому отключение крючок может быть отказоустойчивой, при условии, что все еще может получить доступ к ресурсам для Dispose (который не может быть всегда так).

+0

Приятно знать. В этом случае я, вероятно, займусь выводом на остановку, так как я могу получить доступ к ресурсам, о которых я беспокоюсь. –

Смежные вопросы