在我的代码中,我遇到了引发System.Reflection.TargetInvocationException
的情况。在一个特定的情况下,我知道我想如何处理根异常,但我想抛出所有其他异常。我可以考虑两种方法来做这件事,但我不确定哪种方法更好。检查内部异常的类型
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
}
}
我知道,在一般抛出异常缓慢,所以我觉得第一种方法将可能更快。或者,有没有更好的方法来做到这一点,我没有想到?
2是引人入胜,IMHO 1更可读的,可能从性能的角度来看较好。 – Gabber 2012-04-12 09:08:05
问题:抛出'TargetInvocationException'的调用是什么?它是你的代码还是第三方? – 2012-04-12 09:16:15
它是从db读取的生成代码。 – geekchic 2012-04-12 09:17:51