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>