Tengo un código que usa la reflexión para extraer valores de propiedades de un objeto. En algunos casos, las propiedades pueden lanzar excepciones, porque tienen referencias nulas, etc.¿Por qué TargetInvocationException es tratado como no capturado por el IDE?
object result;
try
{
result = propertyInfo.GetValue(target, null);
}
catch (TargetInvocationException ex)
{
result = ex.InnerException.Message;
}
catch (Exception ex)
{
result = ex.Message;
}
última instancia, el código funciona correctamente, sin embargo, cuando estoy corriendo en el depurador:
Cuando la propiedad se produce una excepción, el IDE cae en el depurador como si la excepción no hubiera sido detectada. Si pulso ejecutar, el programa fluye y la excepción aparece como una excepción de invocación de destino con la excepción real en la propiedad InnerException.
¿Cómo puedo evitar que esto suceda?
De hecho, esto ayudó: tuve un error de formato de cadena en alguna parte (intenté mostrar un TimeSpan en formato int, en lugar de el número de días) y obtuvo este error Excepción interna: cadena de formato incorrecta. Pero cómo encontrar dónde se realizó este formato. Cuando revisé "Habilitar solo mi código", la excepción no detectada mostró inmediatamente que este era el problema. –