static int retIntExc() throws Exception{
int result = 1;
try {
result = 2;
throw new IOException("Exception rised.");
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println(e.getMessage());
result = 3;
} finally {
return result;
}
}
मेरा एक मित्र एक .NET डेवलपर है और वर्तमान में जावा में माइग्रेट कर रहा है और वह मुझे इस स्रोत के बारे में निम्नलिखित प्रश्न पूछता है। सिद्धांत में यह throw IOException("Exception rised.")
होना चाहिए और पूरी विधि retIntExc()
throws Exception
होना चाहिए। लेकिन कुछ नहीं होता है, विधि 2 लौटती है।अंततः
मैंने अपने उदाहरण का परीक्षण नहीं किया है, लेकिन मुझे लगता है कि यह अपेक्षित व्यवहार नहीं है।
संपादित करें: सभी उत्तरों के लिए धन्यवाद। आप में से कुछ ने इस तथ्य को अनदेखा कर दिया है कि विधि को retIntExc
कहा जाता है, जिसका अर्थ है कि यह केवल कुछ परीक्षण/प्रयोगात्मक उदाहरण है, जो यांत्रिकी को फेंकने/पकड़ने में समस्या दिखा रहा है। मुझे 'फिक्स' की आवश्यकता नहीं थी, मुझे स्पष्टीकरण की आवश्यकता क्यों हुई।
आप इसे 'IOException' फेंक क्यों नहीं देते? – BoltClock
http://stackoverflow.com/questions/65035/in-java-does-return-trump-finally –