Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Java (http://www.forosdelweb.com/f45/)
-   -   Manejar excepciones en proyecto struts (http://www.forosdelweb.com/f45/manejar-excepciones-proyecto-struts-462075/)

fcoexposito 04/02/2007 11:41

Manejar excepciones en proyecto struts
 
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

GreenEyed 04/02/2007 15:16

Re: Manejar excepciones en proyecto struts
 
Una idea es usar try catch anidados para saber exactamente que error te ha dado
Código:


try
{
  // Obtener conexion
  try
  {
    // Comprobar si existe el usuario
    if(fueBien)
    {
      try     
      {
        // Insertar usuario
      }
      catch
      {
        // Error insertando usuario
      }
    }
  }
  catch
  {
    // Error comprando si existe el usuario
  }
}
catch
{
  // Error consiguiendo conexion
}
finally
{
 
}

Aunque el código parezca mucho mas "cargado", es una forma de saber exactamente que pasó, en todo momento.

S!


La zona horaria es GMT -6. Ahora son las 10:55.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.