Retroceder   Foros del Web > Programación para sitios web > Java y JSP

Respuesta
 
Herramientas Desplegado
Antiguo 04-feb-2007, 10:41   #1 (permalink)
fcoexposito está en el buen camino
 
Fecha de Ingreso: enero-2004
Mensajes: 12
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
fcoexposito está desconectado   Responder Citando
Antiguo 04-feb-2007, 14:16   #2 (permalink)
GreenEyed tiene algunos puntos positivos de karma
 
Fecha de Ingreso: octubre-2003
Mensajes: 2.570
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!
GreenEyed está desconectado   Responder Citando
Respuesta

Calificación: Calificación de Tema: 1 votos, 5,00 de promedio.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Desactivado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 20:07.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93