Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Java

Java में अनरीचेबल catch ब्लॉक्स क्या हैं?


स्टेटमेंट्स का एक ब्लॉक जिस तक कंट्रोल कभी भी किसी भी केस में नहीं पहुंच सकता उसे अनरीचेबल ब्लॉक्स कहा जा सकता है। अनरीचेबल ब्लॉक्स जावा द्वारा समर्थित नहीं हैं। Exception क्लास के रेफरेंस के साथ मेंशन किया गया catch ब्लॉक हमेशा अंतिम catch ब्लॉक होना चाहिए क्योंकि Exception सभी अपवादों का सुपरक्लास है। जब हम मल्टीपल catch ब्लॉक्स रखते हैं, तो catch ब्लॉक्स का क्रम सबसे विशिष्ट से सबसे सामान्य तक होना चाहिए। यानी Exception के सबक्लास पहले आने चाहिए और सुपरक्लास बाद में। यदि हम सुपरक्लास को पहले और सबक्लास को बाद में रखते हैं, तो कंपाइलर अनरीचेबल catch ब्लॉक एरर फेंकेगा।

सिंटैक्स

try {
    // स्टेटमेंट्स
} catch(Exception e) {
    System.out.println(e);
} catch(NumberFormatException nfe) {
    // अनरीचेबल ब्लॉक। जावा द्वारा समर्थित नहीं, एरर की ओर ले जाता है।
    System.out.println(nfe);
}

कंपाइलर द्वारा एक catch क्लॉज को रीचेबल माना जाता है यदि निम्नलिखित दोनों शर्तें सत्य हैं

  • try ब्लॉक में फेंका गया एक चेक्ड अपवाद C के पैरामीटर को असाइन करने योग्य है।
  • कोई पिछला catch क्लॉज नहीं है जिसका पैरामीटर टाइप C के पैरामीटर टाइप के बराबर या उसका सुपरटाइप हो।

कंपाइलर द्वारा रीचेबल माना जाने वाला एक catch क्लॉज अनरीचेबल हो सकता है यदि निम्नलिखित दोनों शर्तें सत्य हैं

  • कैच क्लॉज पैरामीटर टाइप E में कोई अनचेक्ड अपवाद शामिल नहीं है।
  • try ब्लॉक में फेंके गए सभी अपवाद जिनका टाइप E का (स्ट्रिक्ट) सबटाइप है, पहले से ही पिछले catch क्लॉज द्वारा संभाले जा चुके हैं।

उदाहरण

public class UnreachableBlock{
    public static void main(String[] args) {
        try {
            int i = Integer.parseInt("abc"); // यह स्टेटमेंट NumberFormatException फेंकता है
        } catch(NumberFormatException nfe) {
            System.out.println("यह ब्लॉक NumberFormatException को संभालता है");
        } catch(Exception e) {
            System.out.println("यह ब्लॉक सभी अपवाद प्रकारों को संभालता है");
        } catch (Throwable t) {
            System.out.println("Throwable, Exception का सुपर क्लास है");
        }
    }
}

आउटपुट

यह ब्लॉक NumberFormatException को संभालता है

  1. - Java क्लास में static मेंबर्स को पढ़ने के चरण क्या हैं?

    एक static वेरिएबल क्लास लोडिंग के समय बनता है यहां तक कि static ब्लॉक के निष्पादन से पहले और static ब्लॉक का उद्देश्य static वेरिएबल्स को मान असाइन करना है। एक static वेरिएबल एक मान स्टोर करता है जो उस क्लास के सभी इंस्टेंसेस के बीच शेयर किया जाता है जिसमें यह परिभाषित है और एक static ब्लॉक कोड का

  1. - Java में एक try ब्लॉक के साथ multiple catch ब्लॉक उपयोग कर सकते हैं?

    हां, Java में हम एक try ब्लॉक के साथ एकाधिक (multiple) catch ब्लॉक परिभाषित कर सकते हैं। हर try ब्लॉक कम से कम एक catch ब्लॉक से जुड़ा होना चाहिए (या finally ब्लॉक)। जब भी try ब्लॉक में कोई अपवाद ऑब्जेक्ट पहचाना जाता है और यदि एकाधिक catch ब्लॉक हैं, तो catch ब्लॉक को प्राथमिकता उस क्रम के आधार प

  1. - Java में try ब्लॉक बिना catch ब्लॉक के उपयोग कर सकते हैं?

    हां, finally ब्लॉक का उपयोग करके try ब्लॉक को बिना catch ब्लॉक के उपयोग करना संभव है। जैसा कि हम जानते हैं, finally ब्लॉक हमेशा निष्पादित होता है भले ही try ब्लॉक में कोई अपवाद आया हो, System.exit() को छोड़कर यह हमेशा निष्पादित होता है। उदाहरण 1: साधारण try-finally public class TryBlockWithoutCat