Wenn Sie einen eigenen Startkonfigurationstyp definiert haben, wollen Sie wahrscheinlich auch Fehler oder andere Informationen handhaben, die bei der Ausführung des Programms ausgegeben werden. Denkbar wäre beispielsweise, dass der Benutzer unterrichtet oder gewarnt werden soll, wenn bei einem Start bestimmte Arten von Fehlern auftreten, oder dass Informationsnachrichten bei bestimmten Statusänderungen im Programm ausgegeben werden sollen. Da es sich in der Praxis bewährt hat, die Benutzerschnittstellenverarbeitung von der Kernfunktion zu trennen, sollten Sie keine direkten Verweise von der Starterweiterung auf Klassen zur Statusverarbeitung verwenden.
Dieses Problem wird durch den Erweiterungspunkt org.eclipse.debug.core.statusHandlers gelöst. Mit seiner Hilfe können Sie einem spezifischen Statuscode eine Statussteuerroutine zuordnen. Bei Verwendung dieses Erweiterungspunkts können Sie alle möglichen Status- und Fehlercodes in der Starterweiterung und den Kernklassen definieren und gleichzeitig aus einem anderen Plug-in eindeutige Steuerroutinen für die einzelnen Statuscodes registrieren.
Der Erweiterungspunkt nimmt keine Zuordnung zwischen einer Statussteuerroutine und einer Startkonfiguration vor. Für das Feststellen von Fehlern, die Ermittlung der entsprechenden Statussteuerroutine und deren Aufruf ist allein die Implementierung zuständig. Die Erweiterung stellt lediglich eine Registrierung zur Verfügung, damit die Statussteuerroutinen für bestimmte Statuscodes ermittelt werden können. Clients ermitteln Statussteuerroutinen durch Abfrage des Objekts DebugPlugin.
IStatusHandler handler = DebugPlugin.getDefault().getStatusHandler(status);
Statussteuerroutinen sollten IStatusHandler implementieren. Die Statussteuerklasse wird in der Erweiterungsdefinition zusammen mit dem zugeordneten Statuscode und dem Plug-in angegeben, das voraussichtlich die Statuscodewerte generiert.
Die folgenden Befehle zeigen, wie Statussteuerroutinen in den Java-Tools deklariert werden:
<extension point = "org.eclipse.debug.core.statusHandlers"> <statusHandler id="org.eclipse.jdt.debug.ui.statusHandler.workingDirectory" class="org.eclipse.jdt.internal.debug.ui.launcher.WorkingDirectoryStatusHandler" plugin ="org.eclipse.jdt.launching" code="115"> </statusHandler> <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>