Foros del Web » Programación para mayores de 30 ;) » .NET »

Try - Catch - Excepciones

Estas en el tema de Try - Catch - Excepciones en el foro de .NET en Foros del Web. Hola foro.. tengo una duda.. Resulta que ejecuto un OleDbSelectCommand.ExecuteReader() con una consulta sql que inserta datos en una tabla de una bd oracle. Ocupé ...
  #1 (permalink)  
Antiguo 27/07/2006, 14:12
Avatar de shalom_dy  
Fecha de Ingreso: marzo-2005
Ubicación: Chile
Mensajes: 94
Antigüedad: 19 años, 11 meses
Puntos: 0
Pregunta Try - Catch - Excepciones

Hola foro.. tengo una duda..

Resulta que ejecuto un OleDbSelectCommand.ExecuteReader() con una consulta sql que inserta datos en una tabla de una bd oracle.

Ocupé el try - Catch (lo he probado con varios tipos de exepciones) , pero no me resulta.
pues si inserto un registro que no existe, lo agrega sin problemas
si vuelvo a insertar el mismo registro ... no me envia ningun mensaje de error, ni siquiera se me cae la pagina

Si pongo el mismo sql y lo ejecuto en SQL Navigator me sale el error :[1]: (Error): ORA-00001: unique constraint (DWCO.ESVE_PK) violated

Cómo podre capturar esto ???

gracias desde ya.. ojala y me puedan ayudar.
__________________
Shalom Dy.
  #2 (permalink)  
Antiguo 27/07/2006, 14:51
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 23 años
Puntos: 50
Cual es el code que estás usando..??

Salu2
__________________
Nadie roba nada ya que en la vida todo se paga . . .

Exentrit - Soluciones SharePoint & Net
  #3 (permalink)  
Antiguo 27/07/2006, 14:59
Avatar de shalom_dy  
Fecha de Ingreso: marzo-2005
Ubicación: Chile
Mensajes: 94
Antigüedad: 19 años, 11 meses
Puntos: 0
El codigo:

Dim myReader As OleDbDataReader
Me.OleConn7.ConnectionString = Strconn
Me.OleDa.SelectCommand = Me.OleDbSelectCommand
Me.OleDbSelectCommand.CommandText = Strparam

Try
Me.OleDbSelectCommand.Connection = Me.OleConn7
myReader = OleDbSelectCommand.ExecuteReader()
Catch Exp As OleDbException
response.write("paso un error")
OleConn7.Close()
Return
End Try
myReader.Close()
Me.OleConn7.Close()
__________________
Shalom Dy.
  #4 (permalink)  
Antiguo 27/07/2006, 15:11
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 23 años
Puntos: 50
bueno para empezar te quiero recomendar que no cierres una conexion en un catch, podría quedarte así:

Código:
....
...
Try
      Me.OleDbSelectCommand.Connection = Me.OleConn7
      myReader = OleDbSelectCommand.ExecuteReader()
Catch ex As Exception
      Response.write("Error = " + ex.Message)
Finally
If OleConn7.State = ConnectionState.Open Then
        OleConn7.Close()
End Try
myReader.Close()
no quiere decir que asi debe ir, tambien depende de si estas usando aplicacion a capas, por lo que debes separar tu negocio y datos de presentacion y además no debes mostrar el error al usuario, lo debes direccionar a una página amigable donde le inform que ocurrio un error e internamente tu cachas ese error en algun tipo de log mediante el eventviewer, por base de datos, en tu txt, o como tu quieras... pero bueno, creo que me estoy desviando un poco del tema.. jeje y la verdad si estás empezando no quisiera confundirte...

mejor prueba el ejemplo que te mande y nos dices si pudiste cachar el error

cualquier cosa por aqui andaremos..
__________________
Nadie roba nada ya que en la vida todo se paga . . .

Exentrit - Soluciones SharePoint & Net
  #5 (permalink)  
Antiguo 27/07/2006, 15:28
Avatar de shalom_dy  
Fecha de Ingreso: marzo-2005
Ubicación: Chile
Mensajes: 94
Antigüedad: 19 años, 11 meses
Puntos: 0
rootk, gracias por contestar y dale no mas con los consejos que siempre son útiles.

Mira puse el mismo codigo.. incluyendo un end if
Dim myReader As OleDbDataReader
Me.OleConn7.ConnectionString = Strconn
Me.OleDa.SelectCommand = Me.OleDbSelectCommand
Me.OleDbSelectCommand.CommandText = Strparam

Try
Me.OleDbSelectCommand.Connection = Me.OleConn7
myReader = OleDbSelectCommand.ExecuteReader()
Catch ex As Exception
Response.Write("Error = " + ex.Message)
Finally
If OleConn7.State = ConnectionState.Open Then
OleConn7.Close()
End If
End Try
myReader.Close()


y me sale el error:
Referencia a objeto no establecida como instancia de un objeto.
__________________
Shalom Dy.
  #6 (permalink)  
Antiguo 27/07/2006, 15:30
Avatar de shalom_dy  
Fecha de Ingreso: marzo-2005
Ubicación: Chile
Mensajes: 94
Antigüedad: 19 años, 11 meses
Puntos: 0
ahhh y marca el error en myReader.Close()
__________________
Shalom Dy.
  #7 (permalink)  
Antiguo 27/07/2006, 16:24
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 23 años
Puntos: 50
sorry.. se me fue un poco.. primero debes cerrar el objeto datareader antes de cerrar la conexion.. prueba ésto:

Cita:
...
..
Finally

If Not myReader.IsClosed Then
myReader.Close()

If OleConn7.State = ConnectionState.Open Then
OleConn7.Close()
End If
End Try
__________________
Nadie roba nada ya que en la vida todo se paga . . .

Exentrit - Soluciones SharePoint & Net
  #8 (permalink)  
Antiguo 27/07/2006, 16:31
Avatar de shalom_dy  
Fecha de Ingreso: marzo-2005
Ubicación: Chile
Mensajes: 94
Antigüedad: 19 años, 11 meses
Puntos: 0
gracias .. lo vere y te cuento luego
__________________
Shalom Dy.
  #9 (permalink)  
Antiguo 28/07/2006, 09:19
Avatar de shalom_dy  
Fecha de Ingreso: marzo-2005
Ubicación: Chile
Mensajes: 94
Antigüedad: 19 años, 11 meses
Puntos: 0
Hola RootK ahora si, no tengo problemas con myReader.
esta todo Ok...
Gracias !!
__________________
Shalom Dy.
  #10 (permalink)  
Antiguo 31/07/2006, 04:58
Avatar de freegirl
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: Catalonia
Mensajes: 4.334
Antigüedad: 21 años, 4 meses
Puntos: 156
Rootk, ¿entonces no sería muy correcto mostrar lo de:

Cita:
ex.Message
?

Entonces que muestras un texto general para todos los errores?



saludos!
  #11 (permalink)  
Antiguo 02/08/2006, 10:36
Avatar de peloteitor  
Fecha de Ingreso: noviembre-2003
Ubicación: Madrid
Mensajes: 849
Antigüedad: 21 años, 3 meses
Puntos: 1
¿Comor?
ex.Message contiene el mensaje de la excepcion generada al producirse un error dentro del try-catch. Las excepciones son distintas dependiendo del error y, por tanto, el mensaje asociado también.
__________________
El sexo sin amor es una experiencia vacía. Pero como experiencia vacía es una de las mejores.

Woody Allen
  #12 (permalink)  
Antiguo 02/08/2006, 11:44
Avatar de freegirl
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: Catalonia
Mensajes: 4.334
Antigüedad: 21 años, 4 meses
Puntos: 156
Cita:
Comor?
ex.Message contiene el mensaje de la excepcion generada al producirse un error dentro del try-catch. Las excepciones son distintas dependiendo del error y, por tanto, el mensaje asociado también.
Evidentemente, pero no me refiero a eso.

La idea es hacer un registro de errores internos y no mostrar los mensajes de error al usuario que si "system.exception line:900...." , "overflow...." etc etc, porque queda feo. O sea, lo que se pretende es enseñar un mensaje de error "amigable" cara al usuario y el error se capta internamente registrándose en un registro de errores.


saludos
  #13 (permalink)  
Antiguo 04/08/2006, 03:47
 
Fecha de Ingreso: mayo-2005
Mensajes: 423
Antigüedad: 19 años, 8 meses
Puntos: 1
de todas formas, si estas trabajando con web, despues de comprobar que funciocna correctamente cambia todos los ex.message por un mensaje tipo, por temas de seguridad principalmente

venga un saludo
__________________
Dios creo un equipo perfecto a los demas los lleno de extranjeros
  #14 (permalink)  
Antiguo 04/08/2006, 13:13
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 23 años
Puntos: 50
Cita:
Iniciado por freegirl
Entonces que muestras un texto general para todos los errores?



Cita:
Iniciado por RootK
lo debes direccionar a una página amigable donde le inform que ocurrio un error e internamente tu cachas ese error en algun tipo de log mediante el eventviewer, por base de datos, en tu txt, o como tu quieras...
Salu2
  #15 (permalink)  
Antiguo 05/08/2006, 03:51
Avatar de freegirl
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: Catalonia
Mensajes: 4.334
Antigüedad: 21 años, 4 meses
Puntos: 156
Creo que cada uno habla de algo distinto jajaj Yo hablo de Windows form y creo que vosotros de Web Forms.

Para win forms:

Yo lo que hago es que cuando ocurre un error, es registrarlo en una bd exclusivamente para eso. Se van registrando todos los errores detalladamente.
Lo único que veo es que en Win Forms no puedes hacer lo mismo que en Web Forms, desde mi punto de vista claro. O sea, en Web veo bien redirigirlo a una página de error dónde se diga "ha ocurrido un error interno. COntacte con el administrador" (o el mensaje que sea). Pero en Win forms no vas a sacar todo el rato el mismo mensaje, no? Al menos a mi no me gusta la idea esa para una apliacación Win Forms, cosas de gustos.
Por lo cual, me refería a que si le sacais al usuario un 'ex.message', o bien, escribís un mensaje personalizado distinto cada vez? Alguien me entiende lo que quiero decir? jajaj


saludos!
  #16 (permalink)  
Antiguo 06/08/2006, 01:19
Avatar de Williams M.  
Fecha de Ingreso: junio-2005
Ubicación: El Salvador, Centro America
Mensajes: 43
Antigüedad: 19 años, 8 meses
Puntos: 0
...

Hola

Yo en lo personal, me inclino por un mensajito con flores, o dulcitos, es decir, un mensaje personalizado menos tecnico que el que puede dar un ex.message.

saludos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:54.