2011-12-05 11 views
25

एक जावा 7 multicatch ब्लॉक में निम्नलिखित जैसे:जावा 7 मल्टीचैच ब्लॉक में पकड़े गए अपवाद का प्रकार क्या है?

try { 
    // code that throws exception 
} catch (CharacterCodingException | UnknownServiceException ex) { 
    // handle exception 
} 

क्या ex का संकलन समय प्रकार है? क्या यह सबसे व्युत्पन्न वर्ग है कि दोनों अपवाद प्रकारों में आम है? इस उदाहरण में यह IOException होगा।

+0

यह भावना जा करने के लिए जो भी फेंक दिया जाता है बनाना होगा, लेकिन आप आसानी से बाहर मुद्रण 'ex.getClass से जांच कर सकते हैं()' – Jon

+0

आप अलग व्यवहार की आवश्यकता है पकड़े गए अपवाद के आधार पर, आपको मल्टीचैच ब्लॉक का उपयोग नहीं करना चाहिए - इसे कई कैच ब्लॉक में विभाजित करें। –

+2

@ जोन: "टाइप" एक संकलन-समय अवधारणा है, आप ऑब्जेक्ट के रनटाइम क्लास के बारे में बात कर रहे हैं। – ColinD

उत्तर

22

हाँ, ex के प्रकार CharacterCodingException और UnknownServiceException दोनों के सबसे विशिष्ट महाप्रकार, जो IOException होगा।

संपादित करें: सीधे घोड़े के मुंह से http://cr.openjdk.java.net/~darcy/ProjectCoin/ProjectCoin-Documentation-v0.83.html#multi_catch पर:

अनौपचारिक रूप से, लब (कम से कम ऊपरी सीमा) प्रश्न में प्रकार के सबसे विशिष्ट महाप्रकार है।

+0

क्या आपके पास कोई संदर्भ है? [ओरेकल डॉक्टर] (http://docs.oracle.com/javase/7/docs/technotes/guides/language/catch-multiple.html) बल्कि हल्का लगता है। – Andrew

+0

लिंक के साथ अपडेट किया गया। – gustafc

+0

धन्यवाद। स्वीकार्य उत्तर यह है। – Andrew

12

जेएसएल 7 http://docs.oracle.com/javase/specs/jls/se7/html/jls-14.html#jls-14.20-510

§14.20> एक अपवाद पैरामीटर का घोषित प्रकार है कि विकल्पों के साथ एक संघ के रूप में अपने प्रकार को दर्शाता है में डी 1 | डी 2 | ... | डीएन लब (डी 1, डी 2, ..., डीएन) (§15.12.2.7) है।

lub() की परिभाषा i.e कम से कम ऊपरी बाउंड काफी संकलित है। सौभाग्य से हम यहां के बारे में बात कर रहे हैं आमतौर पर थ्रोबल के गैर सामान्य उप-वर्ग हैं, और lub() सबसे विशिष्ट सुपर क्लास उत्पन्न करते हैं।

एक और अधिक जटिल मामले के लिए, पर विचार

class E1 extends Exception implements G<A> 
class E2 extends Error implements G<B> 

lub(E1, E2) = Throwable & G<?> 
संबंधित मुद्दे

 संबंधित मुद्दे