Buenas,
Tengo una duda de cómo diseñar excepciones en mi proyecto de struts. Tengo classes Action y Bean. Las clases action ejecutan métodos de las clases bean, las cáles se conectan con la base de datos.
Suponiendo que intento crear un usuario en una de las páginas y el usuario ya existe. ¿Cuál es la mejor manera de mostrar el error al usuario que intenta crear el nuevo usuario?
1.Lanzar la excepción en la case bean mediante ModuleException de struts y mostrar una página de error general. (No me gusta mucho esta idea…)
2.Antes de ejecutar en la clase action el método crearUsuario del bean, ejecutar otro método que mire si el usuario ya existe. Si existe, usar ActionMessages en la clase action para mostrar el error en la misma página crearUsuario.jsp.
Esto significa que si el usuario no existe, el método de la action class ha´ra dos accesos a la base de datos, uno para chequear si existe el usuario y otro para crearlo.
3.Ejecutar el método crearUsuario del bean utilizando try y finally, pero sin catch y lanzar una SQLException.
public OTDUsuario crearUsuario (String dni, String passwd) throws SQLException
{
try
{
Conexión a la base de datos y resultados
}
finally
{
Cerrar resultSet, statement and connection
}
}
La excepción sera cpgida por el método de la clase action, dónde está el catch(SQLException), el cual recibirá la excepción del método del bean.
java.sql.SQLException: ORA-00001: unique restriction (PK_USER) violated
Y con ActionMessages mostrar el error en la misma página crearUsuario.jsp. Pero, ¿cómo puedo saber cuál es la causa de esta SQLException?:
a) Primary key violada (java.sql.SQLException: ORA-00001: unique restriction (PK_USER) violated)
b) Nombre y apellidos son únicos (java.sql.SQLException: ORA-00001: unique restriction (U_NAME_SURNAME1_SURNAME2_U) violated)
Dependiendo del error que reciba, quiero mostrar “existe clave primaria” o “nombre y apellidos existen con otra clave primaria”
4.Otra sugerencia?
Gracias