Определив собственный тип конфигурации запуска, вам может потребоваться настроить обработку информации о состоянии и ошибок, возникающих в ходе выполнения программы. Например, может потребоваться уведомлять пользователя о некоторых ошибках, происходящих во время запуска, либо выдавать информационные сообщения в случае изменения конкретных состояний программы. Поскольку пользовательский интерфейс всегда рекомендуется отделять от базовых функций, прямые ссылки между делегатом запуска и классами обработки состояний неприменимы.
В этом случае используется точка расширения 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>