Tratando Erros de um Programa Ativado

Se você definiu seu próprio tipo de configuração de ativação, é provável que deseje tratar erros ou outras informações de status que surgem durante a execução do programa. Por exemplo, você pode querer avisar ou alertar o usuário quando determinados tipos de erro ocorrerem durante uma ativação ou fornecer mensagens informativas para determinadas alterações de status no programa. Como é uma boa prática separar a manipulação da UI da função de núcleo, você não deseja ter referências diretas de seu delegado de ativação para classes de manipulação de status.

Esse problema é tratado pelo ponto de extensão org.eclipse.debug.core.statusHandlers.Ele permite associar uma rotina de tratamento de status a um código de status específico. Utilizando esse ponto de extensão, você pode definir todos os códigos possíveis de erro e de status em suas classes de núcleo e de delegado de ativação enquanto registra rotinas de tratamento exclusivas para códigos de status diferentes de outro plug-in.

O ponto de extensão não designa nenhuma associação entre uma rotina de tratamento de status e uma configuração de ativação. Compete à implementação do delegado de ativação detectar erros, localizar a rotina apropriada de tratamento de status e chamá-la. A extensão simplesmente fornece um registro para que as rotinas de tratamento de status possam ser localizadas para códigos específicos de status. O DebugPlugin fornece um método utilitário para obtenção de uma rotina específica de tratamento de status.

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

As rotinas de tratamento de status devem implementar IStatusHandler.A classe de manipulação de status é especificada na definição da extensão, juntamente com seu código de status associado e o plug-in esperado para gerar os códigos de status.

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

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