Se você definiu seu próprio tipo de configuração de lançamento, é provável que tratará dos erros ou de outras informações que surgirem durante a execução do programa. Por exemplo, poderá solicitar ou alertar o usuário quando determinados tipos de erros ocorrerem durante um lançamento ou fornecer mensagens informativas para determinadas alterações de status no programa. Como é um bom hábito separar tratamento da UI da função núcleo, você não terá referências diretas de sua delegação de lançamento para as classes de tratamento de status.
Esse problema é tratado pelo ponto de extensão org.eclipse.debug.core.statusHandlers. Ele permite a associação de uma rotina de tratamento de status a um código de status específico. Com este ponto de extensão, você pode definir todos os códigos de status e de erros possíveis na delegação de lançamento e classes núcleo, enquanto registra rotinas de tratamento exclusivas para os 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 lançamento. É responsabilidade da implementação da delegação de lançamento detectar erros, encontrar a rotina de tratamento de status apropriada e chamá-la. A extensão simplesmente fornece um registro para que as rotinas de tratamento de status possam ser localizadas considerando-se os códigos de status específicos. Os clientes encontram as rotinas de tratamento de status consultando o DebugPlugin.
IStatusHandler handler = DebugPlugin.getDefault().getStatusHandler(status);
As rotinas de tratamento de status devem implementar o IStatusHandler. A classe de tratamento de status é especificada na definição da extensão, junto 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>