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

Pasar un parametro de tipo "exception"

Estas en el tema de Pasar un parametro de tipo "exception" en el foro de .NET en Foros del Web. Hola. Una pregunta por favor. Despues de ejecutar un TRY el cual detecta la exception que se produjo, como podria enviar esta exception (que puede ...
  #1 (permalink)  
Antiguo 27/10/2006, 09:23
 
Fecha de Ingreso: julio-2006
Mensajes: 98
Antigüedad: 18 años, 3 meses
Puntos: 0
Pasar un parametro de tipo "exception"

Hola. Una pregunta por favor. Despues de ejecutar un TRY el cual detecta la exception que se produjo, como podria enviar esta exception (que puede ser un UnauthorizedAccessException o "exception" general , etc) a una rutina SUB. La pregunta es como defino el tipo de dato a enviar a la rutina ?

Yo quiero tener una rutina para mostrar los errores y cerrar los archivos.

Gracias...
  #2 (permalink)  
Antiguo 27/10/2006, 09:37
Avatar de erick_arcini  
Fecha de Ingreso: julio-2005
Ubicación: Jaltenco / DF
Mensajes: 1.723
Antigüedad: 19 años, 4 meses
Puntos: 50
primero tienes que decidir que parametro pasar, ya sea el texto claro que te muestra el error o el System.Exception que te desprende? y enviarlo a un sub con un addhandler objeto addressof procedimiento, y en esa adres puedes crear un sender que te contenga todas las excepciones disponibles y ya tu tomas la decision, no se si me explique?
__________________
Mejoremos nuestro país, ayudemos al planeta... próximamente.
  #3 (permalink)  
Antiguo 27/10/2006, 13:15
 
Fecha de Ingreso: julio-2006
Mensajes: 98
Antigüedad: 18 años, 3 meses
Puntos: 0
Gracias.
La verdad no entiendo muy bien.
Haber, supongamos que tengo este codigo:

===========================================
esto al principio:

AddHandler Application.ThreadException, AddressOf ThreadExceptionHandler
===========================================

Sub ThreadExceptionHandler(ByVal sender As Object, ByVal e As Threading.ThreadExceptionEventArgs)

TrappeGenerale(sender, e.Exception)

End Sub

=============================
Supongamos que el usuario no tiene acceso a el d:\ y se genera una exception y el control del programa se va a el SUB:
Try
ArrayDatFiles = System.IO.Directory.GetFiles ("d:\*.dat")
Catch erreur As UnauthorizedAccessException
?????? como envio el mensaje o la exception que quiero ??????????
Catch erreur As Exception
?????? como envio el mensaje o la exception que quiero ??????????
End Try

Gracias....
  #4 (permalink)  
Antiguo 27/10/2006, 13:28
Avatar de Developer9
(Desactivado)
 
Fecha de Ingreso: abril-2005
Ubicación: Mi Ecuador del alma
Mensajes: 4.196
Antigüedad: 19 años, 7 meses
Puntos: 47
Que tiene de especial de especial que el parametro sea de tipo Execption... pues debería ser llamada la función en el catch, pues allí es donde se declara y por lo tanto existe la variable de tipo exception
  #5 (permalink)  
Antiguo 27/10/2006, 14:14
 
Fecha de Ingreso: julio-2006
Mensajes: 98
Antigüedad: 18 años, 3 meses
Puntos: 0
Gracias. El objeto exception lo puedo enviar, pero como detecto dentro de la rutina de error que tiene de exception es.

Ej
Try
Throw New System.DivideByZeroException
'Throw New System.Exception
Catch error As System.DivideByZeroException
RutineError(erreur)
Catch error As Exception
RutineError(error)
End Try

Sub RutineError(ByVal ParamError As Exception)

ParamErreur --- que es ? (DivideByZeroException, exception general, etc)

End Sub
  #6 (permalink)  
Antiguo 27/10/2006, 15:23
Avatar de Alex Reyes  
Fecha de Ingreso: diciembre-2005
Ubicación: Camarillo, CA
Mensajes: 242
Antigüedad: 18 años, 11 meses
Puntos: 2
Con ParamError.GetType.ToString

PrivateSub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Try
'Throw New DivideByZeroException
ThrowNew Exception
Catch ex As DivideByZeroException
ProcessException(ex)
Catch ex As Exception
ProcessException(ex)
EndTry

EndSub
PrivateSub ProcessException(ByRef e As Exception)
MsgBox(e.GetType.ToString)
EndSub
__________________
Alex Reyes
http://jalexreyes.spaces.live.com
  #7 (permalink)  
Antiguo 27/10/2006, 15:42
Avatar de erick_arcini  
Fecha de Ingreso: julio-2005
Ubicación: Jaltenco / DF
Mensajes: 1.723
Antigüedad: 19 años, 4 meses
Puntos: 50
Pero no es necesario que coloquen tantos catch'es, con poner el simbolo exception y como dice alex con el getType se puede obtener su tipo
try
Catch ex as exception
DameElPoder(ex.getType())
end try

sub DameElPoder(ByVal referencia as Type)
.
.
.
end sub

no es necesario hacer el ByRef ya que solo quieres obtener el tipo, no todo el objeto, asi nos ahorramos la tardanza que es en ms pero es algo no
__________________
Mejoremos nuestro país, ayudemos al planeta... próximamente.
  #8 (permalink)  
Antiguo 30/10/2006, 07:38
 
Fecha de Ingreso: julio-2006
Mensajes: 98
Antigüedad: 18 años, 3 meses
Puntos: 0
Disculpen, pero me parece que no fui muy claro cuando hice la pregunta.

Lo que quisiera es enviar la exception que se produce (exception, UnauthorizedAccessException, DivideByZeroException, etc) en cualquier lado del programa a una rutina de tratamiento de errores.
Lo que NO quisiera es tratar en cada metodo, por ejemplo, un mismo error. Asi, por ejemplo, si se produce un error de tipo "UnauthorizedAccessException" en el "metodo1" y en el "metodo104", por ejemplo, no necesito hacer una distincion segun el metodo, es el mismo error y quisiera enviarlo a la rutina de error para que ella haga lo mismo para el "metodo1" y para el "metodo104".
Se entiende ?

Gracias....
  #9 (permalink)  
Antiguo 30/10/2006, 08:24
 
Fecha de Ingreso: julio-2006
Mensajes: 98
Antigüedad: 18 años, 3 meses
Puntos: 0
OK, gracias ya entendi !!!

Rutina de error:
=============
Dim a As System.DivideByZeroException
a = New System.DivideByZeroException

Dim b As System.Exception
b = New Exception

If Equals(a.GetType, ParamErreur.GetType) Then
MessageBox.Show("division cero")
End If

If Equals(b.GetType, ParamErreur.GetType) Then
MessageBox.Show("exception gral")
End If
  #10 (permalink)  
Antiguo 30/10/2006, 17:10
foo
 
Fecha de Ingreso: febrero-2006
Mensajes: 278
Antigüedad: 18 años, 9 meses
Puntos: 0
si usas el manejo de excepciones solo para mostrar mensajitos, estas mal...
  #11 (permalink)  
Antiguo 30/10/2006, 17:14
Avatar de erick_arcini  
Fecha de Ingreso: julio-2005
Ubicación: Jaltenco / DF
Mensajes: 1.723
Antigüedad: 19 años, 4 meses
Puntos: 50
si se supone que vas a llevar un log de errores deberias de contemplar los errores que te mande tu app no solo mostrar mensajes pero bueno, hay de uno
__________________
Mejoremos nuestro país, ayudemos al planeta... próximamente.
  #12 (permalink)  
Antiguo 30/10/2006, 19:50
 
Fecha de Ingreso: julio-2006
Mensajes: 98
Antigüedad: 18 años, 3 meses
Puntos: 0
Gracias por sus opiniones!!!
Le verdad, la idea es que la rutina se encargue de mostrar un mensaje, pero ademas que cierre los archivos abiertos, por ejemplo, para terminar la applicacion.
Ademas lo que no quiero es que, por ejemplo, si estoy:

1- leyendo un archivo
2- copiando con otro extension para hacer un backup
3- modificandolo, etc

y esto en varias secciones distintas del programa, no programe el mismo try-catch siempre en cada una de ellas, que se encargue la rutina de error.

Bueno, yo no soy un experto ni mucho menos, asi que bienvenida sea las sugerencias y por supuesto las razones.

Muchas gracias...
  #13 (permalink)  
Antiguo 30/10/2006, 21:40
foo
 
Fecha de Ingreso: febrero-2006
Mensajes: 278
Antigüedad: 18 años, 9 meses
Puntos: 0
Cita:
Iniciado por nolo41 Ver Mensaje
Gracias por sus opiniones!!!
Le verdad, la idea es que la rutina se encargue de mostrar un mensaje, pero ademas que cierre los archivos abiertos, por ejemplo, para terminar la applicacion.
Ademas lo que no quiero es que, por ejemplo, si estoy:

1- leyendo un archivo
2- copiando con otro extension para hacer un backup
3- modificandolo, etc

y esto en varias secciones distintas del programa, no programe el mismo try-catch siempre en cada una de ellas, que se encargue la rutina de error.

Bueno, yo no soy un experto ni mucho menos, asi que bienvenida sea las sugerencias y por supuesto las razones.
mi opinion iba mas a que, se deberia "capturar" una excepcion siempre y cuando hagas algo util y puedas "recuperar" el estado de la aplicacion antes de que suceda ésta, por ejm, usar excepciones del tipo Exception, no sirve casi para nada, porque no sabes realmente que pudo haber causado ese problema
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 14:04.