Se você definiu seu próprio tipo de configuração de ativação, é provável que deseje tratar de erros ou outras informações que surgem durante a execução do programa. Por exemplo, você pode querer avisar ou alertar o usuário quando determinados tipos de erros ocorrem durante uma ativação ou fornecer mensagens informativas para determinadas alterações de status no programa. Como é um bom hábito separar o tratamento de UI da função de núcleo, você não deseja ter referências diretas de sua delegação de ativação para as classes de tratamento 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 delegação de ativação, enquanto registra rotinas exclusivas de tratamento para códigos de status diferentes de um 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 da delegação 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. Os clientes localizam as rotinas de tratamento de status consultando o DebugPlugin.
IStatusHandler handler = DebugPlugin.getDefault().getStatusHandler(status);
As rotinas de tratamento de status devem implementar IStatusHandler. A classe de rotina de tratamento de status é especificada na definição de extensão, juntamente com seu código de status associado e o plug-in do qual se espera 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.workingDirectory" class="org.eclipse.jdt.internal.debug.ui.launcher.WorkingDirectoryStatusHandler" plugin ="org.eclipse.jdt.launching" code="115"> </statusHandler> <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>