मेरे कोड में मैं एक ऐसी स्थिति में आ रहा हूं जिसमें 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
प्रश्न: 'targetInvocationException' फेंकने वाला कॉल क्या है? क्या यह आपका कोड है, या तीसरी पार्टी है? –
यह जेनरेट कोड है जो डीबी से पढ़ रहा है। – geekchic