Java: показать аварии в графике, но подавляет предупреждения

StackOverflow https://stackoverflow.com/questions/2190650

  •  25-09-2019
  •  | 
  •  

Вопрос

Для настольных приложений полезно увидеть штабел на графическом интерфейсе, когда программа вылетает. Я реализовал это в Java, заменив System.RER с моим собственным обработчиком ошибок, который перенаправляет все сообщения об ошибках к компоненту GUI и текстовый файл.

Проблема: там довольно много библиотек (например, Apache POI) не просто писать в System.err, когда происходит сбой, они также выводят простые предупреждающие сообщения. Это приводит к тому, что окно аварийного окна всплывает ненужно. Итак, мой вопрос, никто знает, как (1) показать укладку, когда программа вылетает, пока (2) не показывает его в случае предупреждающих сообщений?

Править] Мой графический интерфейс написан в SWT.

Это было полезно?

Решение

Вы можете установить собственные обработчики исключений. Одна техника для качелей объясняется здесь: http://ruben42.wordpress.com/2009/03/30/catching-all-runtime-exceptions-in-swing/. Отказ Эрик Берк также имеет хорошая статья по этой теме. Отказ Другая общая техника использует Thread.setDefaultUncaughtExceptionHandler, который называется, когда нить умирает из-за исключения (в соответствии с комментариями в первом упомянутой статье, качели нить не умирают, поэтому установка необработанного обработчика исключений не работает на качелях, но статья Эрика использует эту технику).

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

Другие советы

Я думаю, что вы приближаетесь к проблеме с неправильного угла. Вы должны появиться диалоговое окно, когда есть исключения, не только когда выводятся в System.err. System.RER больше похожа на утилиту регистрации.

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

Чтобы поймать оставшиеся неконкуренные исключения, вы можете сделать что-то подобное: http://www.javaspecialists.eu/Archive/issue081.html., чтобы убедиться, что вы получаете это.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top