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 moduły obsługi różnych kodów statusu z innego modułu dodatkowego.

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źć moduły obsługi statusów dla określonych kodów statusu. Moduł dodatkowy 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 modułem dodatkowym, który powinien 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>