Обработка ошибок выполняемых программ

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

В этом случае используется точка расширения org.eclipse.debug.core.statusHandlers. Она позволяет связать обработчик состояний с конкретным кодом состояния. С помощью этой точки расширения для делагата запуска и базовых классов можно указать все возможные коды состояний и ошибок, а также зарегистрировать уникальные обработчики для различных кодов состояний из других модулей.

Точка расширения не задает связь между обработчиком состояния и конфигурацией запуска. Обнаружение ошибок, поиск и вызов подходящего обработчика состояний выполняются реализацией делегата запуска. Роль расширения ограничивается предоставлением реестра, в котором можно найти подходящие обработчики для конкретных кодов состояния. DebugPlugin предоставляет метод доступа к конкретному обработчику состояний.

IStatusHandler handler = DebugPlugin.getDefault().getStatusHandler(status);

Обработчики состояний должны применять интерфейс IStatusHandler. Класс обработки состояний указан в определении расширения вместе со связанным кодом состояния и модулем, создающим коды состояний.

Ниже приведен фрагмент исходного кода, с помощью которого инструменты Java объявляют обработчики состояний:

<extension point = "org.eclipse.debug.core.statusHandlers">
	<statusHandler
		id="org.eclipse.jdt.debug.ui.statusHandler.vmConnectTimeout"
		class="org.eclipse.jdt.internal.debug.ui.launcher.VMConnectTimeoutStatusHandler"
		plugin ="org.eclipse.jdt.launching"
		code="117">
	</statusHandler>	
	...
</extension>