Processar erros a partir de um programa lançado

Se tiver definido o seu próprio tipo de configuração de lançamento, é provável que prefira tratar erros ou outras informações de estado que surjam durante a execução do programa. Por exemplo, poderá optar por perguntar ou alertar o utilizador quando ocorrerem certos tipos de erros durante um lançamento ou facultar mensagens informativas para certas alterações de estado no programa. Visto que é boa prática separar o tratamento da UI das funções de núcleo, não se pretende aqui ter referências directas oriundas do delegado de lançamento a classes de tratamento de estados.

Este problema é abordado pelo ponto de extensão org.eclipse.debug.core.statusHandlers. Este permite associar uma rotinas de tratamento de estados a um código de estado específico. Com este ponto de extensão, pode definir todos os códigos de erro e estado possíveis no delegado de lançamento e nas classes de núcleo, enquanto regista rotinas de tratamento para os diferentes códigos de estado oriundos de outro plug-in.

O ponto de extensão não designa nenhuma associação entre uma rotina de tratamento de estados e uma configuração de lançamento. Compete à implementação do delegado de lançamento detectar erros, localizar a rotina de tratamento de estados apropriada e invocá-la. A extensão proporciona meramente um registo para que as rotinas de tratamento de estados possam ser localizadas no que respeita a determinados códigos de estado. O DebugPlugin proporciona um método utilitário para obter uma rotina de tratamento de estados específica.

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

As rotinas de tratamento de estados devem implementarIStatusHandler. A classe de rotinas de tratamento de estados é especificada na definição da extensão, junto com o respectivo código de estado associado e o plug-in de que se espera a geração de códigos de estado.

A marcação seguinte mostra como as ferramentas Java declaram rotinas de tratamento de estados:

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