debugging - tipos - try catch definicion
Depuración de una excepción en un bloque catch vacío (7)
¿No puedes simplemente agregar una excepción en ese punto e inspeccionarla?
Estoy depurando una aplicación de producción que tiene una erupción de suspiros de bloques de captura vacíos:
try {*SOME CODE*}
catch{}
¿Hay alguna manera de ver cuál es la excepción cuando el depurador golpea la captura en el IDE?
@sectrean
Eso no funciona porque el compilador ignora el valor Ex de Exception si no hay nada usándolo.
En VS, si miras en el área Locals de tu IDE mientras estás dentro del bloque catch, tendrás algo así como $ EXCEPTION que tendrá toda la información para la excepción que acaba de capturarse.
En Visual Studio - Depurar -> Excepciones -> Marque la casilla por "Excepciones de Common Language Runtime" en la columna lanzada
No, es imposible, porque ese bloque de código dice "No me importa la excepción". Podría hacer un descubrimiento global y reemplazarlo con el siguiente código para ver la excepción.
catch {}
con lo siguiente
catch (Exception exc) {
#IF DEBUG
object o = exc;
#ENDIF
}
Lo que hará es mantener su captura de corriente actual para el código de producción, pero cuando se ejecuta en DEBUG le permitirá establecer puntos de interrupción en el objeto o.
Puedes escribir
catch (Exception ex) { }
Luego, cuando se lanza una excepción y se captura aquí, puede inspeccionar, por ejemplo,
Si está usando Visual Studio, existe la opción de romper cada vez que se lanza una excepción, independientemente de si no se ha manejado o no. Cuando se lanza la excepción, el asistente de excepción (tal vez solo VS 2005 y posterior) le dirá qué tipo de excepción es.
Presiona Ctrl + Alt + E para abrir el diálogo de opciones de excepción y activarlo.