Obsługa błędów z poziomu uruchomionego programu

Jeśli użytkownik zdefiniował własny typ konfiguracji startowej, prawdopodobnie konieczna będzie obsługa błędów lub innych informacji, które mogą się pojawić w trakcie działania programu. Konieczne może być na przykład poinformowanie lub ostrzeżenie użytkownika w przypadku wystąpienia określonych typów błędów uruchamiania lub wyświetlenie komunikatów informacyjnych przy określonych zmianach statusu programu. Ponieważ dobrą praktyką jest oddzielanie obsługi interfejsu użytkownika od funkcji podstawowej, nie ma potrzeby tworzenia bezpośrednich odwołań z delegata uruchamiania do klas obsługujących statusy.

Ten problem został rozwiązany przez punkt rozszerzenia org.eclipse.debug.core.statusHandlers.Pozwala on powiązać klasy obsługi statusu z konkretnym kodem statusu. Korzystając z tego punktu rozszerzenia, można zdefiniować wszystkie możliwe statusy oraz kody błędów dla delegata uruchamiania i klas podstawowych, rejestrując unikalne wtyczki obsługi różnych kodów statusu z innej wtyczki.

Punkt rozszerzenia nie określa żadnych powiązań między klasą obsługi statusu a konfiguracją startową.Wykrywanie błędów, wyszukiwanie odpowiedniego modułu obsługi oraz wywoływanie go należy do implementacji delegata uruchamiania. Rozszerzenie zapewnia jedynie rejestr, dzięki któremu można znaleźć wtyczki obsługi statusów dla określonych kodów statusu. Wtyczka DebugPlugin oferuje narzędzie służące do uzyskania określonego modułu obsługi statusów.

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

Klasy obsługi statusu powinny implementować interfejs IStatusHandler.Klasa obsługująca statusy jest określona w definicji rozszerzenia wraz z powiązanym z nią kodem statusu oraz wtyczką, która powinna generować kody statusu.

Poniższy fragment kodu pokazuje, jak środowisko JDT deklarują klasy obsługi statusów:

<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>