Отображать исключения в SWT - PullRequest
0 голосов
/ 24 января 2011

Как правильно отобразить исключения для пользователя в приложении SWT / Jface? Я использую log4j для регистрации исключений, но мне нужно отобразить сообщение пользователю.

Может быть, я мог бы использовать то же окно сообщения, что и в Eclipse? Но я не знаю, как его использовать.

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

Спасибо заранее.

Ответы [ 4 ]

1 голос
/ 24 января 2011

Вы делаете это точно так же, как в любой другой GUI Framework:

Никогда не представляйте пользователю исключения

Короче, обрабатывайте исключения внутри приложения, если возможно.Исключение не является оболочкой для пользовательских сообщений.Это внутренний сигнал приложения, что что-то пошло не так, и приложение не может продолжить работу как обычно.Сообщение и трассировка стека должны помочь разработчикам или администраторам найти и устранить проблему.

Если что-то есть, бедному пользователю необходимо знать (потому что он может что-то изменить, например, проверить сетевое соединение), создать сообщение, котороепонятен пользователю (исключение не не соответствует) и отображает это в окне сообщения.

Оставьте исключения для файлов журнала и людей, которые знают, как их читать.


Из другого комментария я прочел ваше намерение: показать больше подробностей на этапе разработки.Таким образом, вам нужно другое поведение для разработки и производства кода.Вы хотите добавить некоторый код debug , который отображает более подробную информацию в случае ошибок.

Рассмотрите возможность внедрения службы, охватывающей все приложения, которая принимает сообщения и представляет их пользователю.Реализация для производственного кода будет только представлять «дружественное» (локализованное?) Сообщение, в то время как реализация для целей разработки также отображает отладочную информацию (полные сообщения об ошибках).Вы можете определить пользовательскую точку расширения и добавить «отладочные расширения» к вашей службе сообщений пользователя в отдельном комплекте.Поэтому, если вы не установите этот пакет, пользователь не получит расширенные сообщения.

0 голосов
/ 24 января 2011

Копаясь в коде, дайте мне понять, что я хочу:

классы org.eclipse.core.runtime.SafeRunner и org.eclipse.jface.util.SafeRunnable являются хорошей отправной точкой для понимания того, как исключения обрабатываются swt / jface .

Можно использовать так:

    SafeRunner.run(new ISafeRunnable() {
      public void run() throws Exception {
           // code that throws exceptions...
      }
    });
0 голосов
/ 24 января 2011

Я могу поддержать только ответы Andreas_D и yeraycaballero. Пользователь будет только сбит с толку, если вы покажете ему исключение.

Вот еще один пример того, как использовать окно сообщения SWT: http://www.java2s.com/Code/Java/SWT-JFace-Eclipse/DemonstratestheMessageBoxclass.htm

Вы также можете найти полезную информацию в официальной документации по Eclipse API: http://help.eclipse.org/helios/index.jsp?topic=/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/widgets/MessageBox.html

0 голосов
/ 24 января 2011

Вы можете использовать MessageBox.

  MessageBox messageBox = new MessageBox(shell, SWT.ICON_ERROR);
  messageBox.setMessage("error message");
  int result = messageBox.open();
  ...

"если произошло более одного исключения, я хочу перечислить все исключения в одно уникальное сообщение"

ПочемуХотите показать список исключений для пользователей?Пользователям нужна только информация об ошибке и сообщение о том, как ее избежать или исправить.

Не могли бы вы опубликовать список исключений, которые вы хотите упаковать, или предоставить дополнительную информацию?.

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