Pregunta

Estoy depurando una aplicación de producción que tiene una serie de bloques catch vacíos. suspiro:

try {*SOME CODE*}
catch{}

¿Hay alguna forma de ver cuál es la excepción cuando el depurador detecta el problema en el IDE?

¿Fue útil?

Solución

En VS, si busca en el área Locales de su IDE mientras está dentro del bloque catch, tendrá algo como $EXCEPTION que tendrá toda la información para la excepción que acaba de detectarse.

Otros consejos

En Visual Studio - Depurar -> Excepciones -> Marque la casilla junto a "Excepciones de Common Language Runtime" en la columna Lanzada

Puedes escribir

catch (Exception ex) { }

Luego, cuando se lanza y detecta una excepción aquí, puede inspeccionar ex.

No, es imposible, porque ese bloque de código dice "No me importa la excepción".Puede realizar una búsqueda global y reemplazar 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 esto hará es mantener su captura actual de no hacer nada para el código de producción, pero cuando se ejecuta en DEBUG le permitirá establecer puntos de interrupción en el objeto o.

Si está utilizando Visual Studio, existe la opción de interrumpir cada vez que se produce una excepción, independientemente de si no está controlada o no.Cuando se produce la excepción, el asistente de excepción (quizás solo VS 2005 y posteriores) le dirá qué tipo de excepción es.

Golpear Control+Alt.+mi para abrir el cuadro de diálogo de opciones de excepción y activarlo.

¿No puedes simplemente agregar una excepción en ese punto e inspeccionarla?

@sectrean

Eso no funciona porque el compilador ignora el valor Exception ex si no hay nada que lo utilice.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top