Si ha definido su propio tipo de configuración de lanzamiento, es probable que desee manejar los errores u otro tipo de información de estado que surja durante la ejecución del programa. Por ejemplo, tal vez desee solicitar o avisar al usuario si se producen ciertos tipos de errores durante un lanzamiento, o proporcionar mensajes informativos relacionados con ciertos cambios de estado del programa. Dado que conviene separar el manejo de la UI de la función núcleo, no le interesa que el delegado de lanzamiento haga referencias directas a las clases de manejo del estado.
Este problema se resuelve mediante el punto de extensión org.eclipse.debug.core.statusHandlers. Le permite asociar un manejador de estado a un código de estado específico. Con este punto de extensión, puede definir todos los códigos posibles de estado y de error del delegado de lanzamiento y de las clases núcleo, a la vez que registra manejadores exclusivos para los distintos códigos de estado de otro conector.
El punto de extensión no designa ninguna asociación entre un manejador de estado y una configuración de lanzamiento. Corre a cargo de la implementación del delegado de lanzamiento la detección de errores, la búsqueda del manejador de estado adecuado y la invocación del mismo. La extensión sólo proporciona un registro para que puedan encontrarse los manejadores de estado correspondientes a códigos de estado determinados. DebugPlugin proporciona un método de programa de utilidad para obtener un manejador de estado específico.
IStatusHandler handler = DebugPlugin.getDefault().getStatusHandler(status);
Los manejadores de estado deben implementar IStatusHandler. La clase de manejo de estado se especifica en la definición de la extensión, junto con el código de estado asociado y el conector que se espera que genere los códigos de estado.
Los siguientes códigos XML muestran cómo declaran las herramientas Java los manejadores de estado:
<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>