2009-11-25 7 views
6

Сначала я подумал, что на вопрос будет часто задаваться вопросы, однако попытка (и неспособность) найти информацию об этом показала мне ошибку.Централизованная обработка исключений для подключаемого модуля Eclipse

Есть ли механизм в платформе Eclipse для централизованной обработки исключений исключений?

Например ... У вас есть проект подключаемого модуля, который подключается к БД и выдает запросы, результаты которых используются для заполнения некоторых, например. Просмотры. Это похоже на самый распространенный пример. :) Запросы выполняются почти для любого действия пользователя, с каждого элемента управления пользовательского интерфейса, который предоставляет плагин. Скорее всего, DB Query API будет иметь некоторые специфические для DB SomeDBGeneralException, объявленные как брошенные им. Это нормально, вы можете справиться с ними в соответствии с вашим программным обеспечением. Но как насчет неконтролируемых исключений, которые могут произойти, например. , когда связь с БД внезапно ломается по какой-то связанной с сетью причине? Что делать, если в таком случае вы хотели бы поймать эти исключения в центральном месте и, например, предоставить пользователю удобное для пользователя сообщение (а не сообщения api низкого уровня коммуникационного протокола) и даже некоторые возможные действия, которые пользователь мог бы выполнить, чтобы справиться с конкретной проблемой?

Мысли в контексте платформы Eclipse, вопрос может быть перефразирован как «Есть ли точка расширения, такая как« org.eclipse.ExceptionHandler », которая позволяет объявлять обработчики исключений для определенных (некоторая поддержка фильтрации) исключений, дающих много гибкость с фактической обработкой? "

ответ

5

Вы можете переопределить public void eventLoopException(Throwable exception) из WorkbenchAdvisor

Цитируется из его Javadoc:

Этот метод вызывается, когда код обработки события UI бросает исключение. В отлично функционирующем приложении этот метод никогда не будет вызываться . На практике он вступает в игру, когда есть ошибки в коде , срабатывающая непроверенные выполнения исключения.

+0

Отлично! Хотя я надеялся, что есть что-то большее, чем API-интерфейс высокого уровня. Спасибо, я дам ему шанс! – Svilen

3

Да, Eclipse действительно предоставляет структуру, как вы описали.

Для получения подробной информации о точке расширения см. http://help.eclipse.org/galileo/index.jsp?topic=/org.eclipse.platform.doc.isv/guide/ua_statushandling_defining.htm.

Отправной точкой является просмотр реализации по умолчанию: WorkbenchErrorHandler. Вам нужно будет реализовать свой собственный класс, который расширяет AbstractStatusHandler. Вам также может понравиться просмотр InternalErrorDialog в плагине org.eclipse.ui. Это отображает трассировку стека, которую вы, вероятно, не хотите, но она расширяет ErrorDialog и предоставляет пример, который вы можете скопировать.

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