在我的代碼中,我遇到了引發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