2009-11-25 17 views
6

Al principio pensé que esto sería una pregunta frecuente, sin embargo, intentar (y fallar) buscar información sobre esto me demostró que estaba equivocado.Manejo de excepciones centralizado para Eclipse plug-in

¿Hay un mecanismo en la plataforma Eclipse para el manejo de excepción centralizado de excepciones?

Por ejemplo ... Tiene un proyecto de complemento que se conecta a una base de datos y genera consultas, cuyos resultados se utilizan para llenar algunos campos, p. Ej. puntos de vista. Este es como el ejemplo más común de todos. :) Las consultas se ejecutan casi para cualquier acción del usuario, desde cada control de UI que proporciona el complemento. Lo más probable es que la API DB Query tenga algo específico para la DB SomeDBGeneralException declarada como lanzada por ella. Está bien, puede manejarlos de acuerdo con el diseño de su software. Pero ¿qué pasa con las excepciones no verificadas que pueden ocurrir, p. , cuando la comunicación con DB se rompe repentinamente por alguna razón relacionada con la red? ¿Qué pasa si en tal caso uno quisiera capturar esas excepciones en un lugar central y, por ejemplo, proporcionar un mensaje fácil de usar al usuario (en lugar de los mensajes api del protocolo de comunicación de bajo nivel) e incluso algunas acciones posibles que el usuario podría ejecutar para lidiar con el problema específico?

Pensando en el contexto de la plataforma Eclipse, la pregunta puede reformularse como "¿Hay un punto de extensión como" org.eclipse.ExceptionHandler "que permite declarar manejadores de excepciones para excepciones específicas (algún tipo de soporte de filtrado) dando mucha flexibilidad con el manejo real? "

Respuesta

5

Es posible anular el public void eventLoopException(Throwable exception) de WorkbenchAdvisor

Citado de su javadoc:

Este método se llama cuando el código manejo de un evento de interfaz de usuario lanza una excepción . En una aplicación que funciona perfectamente, este método nunca se llamaría . En la práctica, entra en juego cuando hay errores en el código que desencadenan el tiempo de ejecución sin control excepciones.

+0

¡Genial! Aunque esperaba que hubiera algo más de API de alto nivel lista para usar. ¡Gracias, le daré una oportunidad! – Svilen

3

Sí, Eclipse proporciona un marco como usted describe.

Consulte http://help.eclipse.org/galileo/index.jsp?topic=/org.eclipse.platform.doc.isv/guide/ua_statushandling_defining.htm para obtener detalles sobre el punto de extensión.

Un punto de partida es observar la implementación predeterminada: WorkbenchErrorHandler. Deberá implementar su propia clase que extienda AbstractStatusHandler. También es posible que desee consultar InternalErrorDialog en el complemento org.eclipse.ui. Esto muestra el seguimiento de pila, que probablemente no desee, pero amplía ErrorDialog y proporciona un ejemplo que puede copiar.