2012-05-20 8 views
7

Desarrollo una aplicación usando Struts, Spring e Hibernate.dónde manejar el resorte DataAccessException

Mis DAOs usan spring jdbc y todo su método arroja DataAccessException (que no se ha comprobado).

¿Dónde debo manejar estas excepciones? Sé que es una excepción no comprobada, pero creo que debo informar al usuario si hay un problema con la base de datos o su conexión.

Creo que debería volver a lanzar la DataAccessException de mis métodos de clase de servicio para ser atrapado por el controlador. ¿Es esta una buena práctica?

He visto las muestras del paquete Spring y no he encontrado ningún manejo de excepciones en el dominio o área de servicio. DataAccessException parece ignorarse después de abandonar el área de dao.

Por favor sugiera un buen diseño para este asunto.

+0

posible duplicado de [¿Puedo utilizar Spring DataAccessException directamente en la capa de servicio] (http://stackoverflow.com/questions/10672879/can-i-use-spring-dataaccessexception-directly-in-service-layer) – Raedwald

Respuesta

13

Parece que se ha ignorado DataAccessException después de abandonar el área de dao.

¡Y eso es algo bueno! Déjalo volar a través de toda la pila. Probablemente tenga transacciones en la capa de servicio: la excepción hará que la transacción más externa se retrotraiga de forma transparente. ¡Estupendo!

Ahora encontrará su camino hacia el controlador. Si lo atrapa en el controlador Struts, puede, por ejemplo, devolver vista diferente. Pero lo más probable es que no desee manejar excepciones en todas y cada una de las acciones de Struts. Así que deja que la excepción vuele aún más abajo. En algún momento, Struts detectará esa excepción y tratará de manejarla. Struts tiene algunos sofisticados mecanismos de manejo de errores, encontrará mucha información sobre ellos. Típicamente invocará alguna acción personalizada o pantalla de error dependiendo del tipo de excepción.

Finalmente, si incluso Struts no puede manejar la excepción, se volverá a lanzar al contenedor, causando HTTP 503 con los detalles de excepción que se devuelven.

Como puede ver, puede controlar las excepciones en muchos niveles, por lo general, menos es mejor.

+0

This es una excelente respuesta. ¡Cudos! – markthegrea

Cuestiones relacionadas