Java SWT: обернуть основной цикл в обработчик исключений? - PullRequest
6 голосов
/ 30 января 2011

Как вы, возможно, знаете, стандартный основной цикл SWT выглядит так:

Display display = new Display();
Shell shell = new Shell(display);
...
shell.open();
while (!shell.isDisposed()) {
  if (!display.readAndDispatch()) {
    display.sleep();
  }
}
display.dispose();

Недавно я поспорил с коллегой о том, имеет ли смысл заключать основной цикл в try-catch, например:

Display display = new Display();
Shell shell = new Shell(display);
...
shell.open();
while (!shell.isDisposed()) {
  try {
    if (!display.readAndDispatch()) {
      display.sleep();
    }
  } catch (RuntimeException e) {
    // TODO Implement exception handler
  }
}
display.dispose();

Мой коллега говорит, что, делая это таким образом, вам не нужно будет немедленно закрывать приложение, если происходит сбой в потоке графического интерфейса, поэтому у пользователя может быть возможность сохранить свои данные перед закрытием программы.

Итак, что ты думаешь? Есть ли смысл делать такие вещи?

1 Ответ

6 голосов
/ 30 января 2011

Это очень хороший стиль, потому что в вашем коде GUI может возникнуть любое исключение. У нас есть общий отправитель BugReport в этом месте, и мне это нравится, потому что ничего не теряется, и приложение продолжает работать после сообщения об ошибке (в основном;)).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...