Manejar los errores de un programa lanzado

Si ha definido su propio tipo de configuración de lanzamiento, es probable que le interese manejar los errores u otro tipo de información que surja durante la ejecución del programa.  Por ejemplo, podría interesarle avisar al usuario de que se hayan producido 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.  Este punto 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.  Los clientes pueden buscar los manejadores de estado consultando el DebugPlugin.

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 supone que generará 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.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>
Copyright IBM Corporation y otros 2000, 2003.