In meinem Code stoße ich auf eine Situation, in der ein System.Reflection.TargetInvocationException
geworfen wird. In einem bestimmten Fall weiß ich, wie ich die Root-Ausnahme behandeln möchte, aber ich möchte alle anderen Ausnahmen werfen. Ich kann mir zwei Möglichkeiten vorstellen, aber ich bin mir nicht sicher, was besser ist.Den Typ einer inneren Ausnahme prüfen
1.
try
{
//code
}
catch (System.Reflection.TargetInvocationException ex)
{
if (typeof(ex.InnerException) == typeof(SpecificException))
{
//fix
}
else
{
throw ex.Innerexception;
}
}
2.
try
{
//code
}
catch (System.Reflection.TargetInvocationException ex)
{
try
{
throw ex.InnerException;
}
catch (SpecificException exSpecific)
{
//fix
}
}
Ich bin mir bewusst, dass Ausnahmen im Allgemeinen wirft langsam, so dass ich das Gefühl, die erste Methode möglicherweise schneller sein würde. Oder gibt es einen besseren Weg, an den ich nicht gedacht habe?
2 ist faszinierend, imho 1 besser lesbar und wahrscheinlich besser von einer Performance-Sicht ist. – Gabber
Frage: Was ist der Anruf, der 'TargetInvocationException' verursacht? Ist es dein Code oder eine dritte Partei? –
Es ist generierter Code, der aus der Datenbank liest. – geekchic