Fehler in gestartetem Programm behandeln

Wenn Sie einen eigenen Startkonfigurationstyp definiert haben, wollen Sie wahrscheinlich auch Fehler oder andere Statusinformationen handhaben, die sich bei der Ausführung des Programms ergeben. 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. Über diesen können Sie einer Statussteuerroutine einen spezifischen Statuscode 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 bestimmt keine Zuordnung zwischen einer Statussteuerroutine und einer Startkonfiguration. Es ist Aufgabe der Implementierung der Starterweiterung, Fehler zu entdecken, die geeignete Statussteuerroutine zu finden und sie aufzurufen. Die Erweiterung bietet lediglich eine Registrierungsdatenbank, so dass Statussteuerroutinen für bestimmte Statuscodes gefunden werden können. DebugPlugin stellt eine Dienstprogrammmethode zur Erlangung einer spezifischen Statussteuerroutine zur Verfügung.

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.vmConnectTimeout"
		class="org.eclipse.jdt.internal.debug.ui.launcher.VMConnectTimeoutStatusHandler"
		plugin ="org.eclipse.jdt.launching"
		code="117">
	</statusHandler>	
	...
</extension>