कोई आमंत्रण TargetException के लक्ष्य अपवाद को फिर से कैसे फेंकता है। मेरे पास एक तरीका है जो मेरी कक्षाओं में से किसी एक के भीतर invoke() विधि को कॉल करने के लिए प्रतिबिंब का उपयोग करता है। हालांकि, अगर मेरे कोड में एक अपवाद फेंक दिया गया है, तो मैं InvocationTargetException के बारे में चिंतित नहीं हूं और केवल लक्ष्य अपवाद चाहता हूं। यहां एक उदाहरण दिया गया है:एक InvocationTargetException लक्ष्य अपवाद को दोबारा फेंक दें
public static Object executeViewComponent(String name, Component c,
HttpServletRequest request) throws Exception {
try {
return c.getClass()
.getMethod(c.getMetaData().getMethod(), HttpServletRequest.class)
.invoke(c, request);
} catch (InvocationTargetException e) {
// throw the target exception here
}
}
प्राथमिक समस्या का सामना करना पड़ रहा है यह है कि कॉलिंग e.getCause(); एक अपवाद नहीं फेंकता है बल्कि एक थ्रोबल फेंकता है। शायद मैं इस गलत तरीके से आ रहा हूं?
catch (XXXException e)
{
throw e;
}
+1। –
आपके आमंत्रण लक्ष्यीकरण अपवाद के लिए 'शून्य' कारण कैसे हो सकता है? –
मुझे नहीं लगता कि यह कभी भी कारण होगा जब यह अपवाद Method.invoke() द्वारा फेंक दिया गया है, लेकिन InvocationTargetException में एक निर्माता है जो शून्य लक्ष्य को अनुमति देता है, इसलिए अन्य परिस्थितियों में, यह शून्य हो सकता है। मैं निश्चित रूप से नहीं जानता, Method.invoke API दस्तावेज़ से, अगर किसी त्रुटि को आमंत्रण के अंदर लपेटा गया है तो लक्ष्य के रूप में फेंक दिया गया है। –