मैं प्रतिबिंब के माध्यम से फोन कर रहा हूं, एक विधि जो अपवाद का कारण बन सकती है। रैपर प्रतिबिंब के चारों ओर रखे बिना मैं अपने कॉलर को अपवाद कैसे पारित कर सकता हूं? मैं इनर एक्सेप्शन को पुनर्स्थापित कर रहा हूं, लेकिन यह स्टैक ट्रेस को नष्ट कर देता है। उदाहरण कोड:सी # में, मैं स्टैक ट्रेस खोए बिना InnerException को कैसे पुनर्स्थापित कर सकता हूं?
public void test1()
{
// Throw an exception for testing purposes
throw new ArgumentException("test1");
}
void test2()
{
try
{
MethodInfo mi = typeof(Program).GetMethod("test1");
mi.Invoke(this, null);
}
catch (TargetInvocationException tiex)
{
// Throw the new exception
throw tiex.InnerException;
}
}
ऐसा करने का एक और तरीका है जिसके लिए किसी भी वूडू की आवश्यकता नहीं है। यहां उत्तर पर एक नज़र डालें: http://stackoverflow.com/questions/15668334/preserving-exceptions-from- गतिशील-invoked-methods –
गतिशील रूप से बुलाए गए विधि में फेंक दिया गया अपवाद "अपवाद का आंतरिक अपवाद है एक आमंत्रण के लक्ष्य से फेंक दिया गया "अपवाद। इसका अपना स्टैक ट्रेस है। चिंता करने के लिए वास्तव में और कुछ नहीं है। – ajeh