Ich habe Code, der Reflektion verwendet, um Eigenschaftswerte von einem Objekt zu ziehen. In einigen Fällen sind die Eigenschaften Ausnahmen auslösen können, weil sie null Referenzen, etc. habenWarum wird TargetInvocationException von der IDE als nicht abgefangen behandelt?
object result;
try
{
result = propertyInfo.GetValue(target, null);
}
catch (TargetInvocationException ex)
{
result = ex.InnerException.Message;
}
catch (Exception ex)
{
result = ex.Message;
}
Letztlich richtig der Code funktioniert, aber wenn ich unter dem Debugger leite:
Wenn die Eigenschaft eine Ausnahme auslöst, Die IDE wird in den Debugger eingefügt, als wäre die Ausnahme nicht abgefangen. Wenn ich nur auf Ausführen klicke, fließt das Programm durch und die Ausnahme tritt als TargetInvocationException mit der echten Ausnahme in der InnerException-Eigenschaft auf.
Wie kann ich dies verhindern?
In der Tat, das half: Ich hatte irgendwo einen String Formatierungsfehler (versucht, eine TimeSpan im int-Format anzuzeigen, statt die Anzahl der Tage) und bekam diesen Fehler. Inner Ausnahme: falsche Formatzeichenfolge. Aber wie man findet, wo diese Formatierung getan wurde. Als ich das "nur meinen Code ermöglichte" anzeigte, zeigte die unbegangene Ausnahme sofort, dass dies das Problem war. –