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

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


हां, Java में हम एक try ब्लॉक के साथ एकाधिक (multiple) catch ब्लॉक परिभाषित कर सकते हैं।

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

उदाहरण

class TryWithMultipleCatch {
    public static void main(String args[]) {
        try {
            int a[] = new int[5];
            a[3] = 10 / 0; // ArithmeticException आएगा
            System.out.println("First print statement in try block");
        } catch (ArithmeticException e) {
            System.out.println("Warning: ArithmeticException");
        } catch (ArrayIndexOutOfBoundsException e) {
            System.out.println("Warning: ArrayIndexOutOfBoundsException");
        } catch (Exception e) {
            System.out.println("Warning: Some Other exception");
        }
        System.out.println("Out of try-catch block");
    }
}

आउटपुट

Warning: ArithmeticException
Out of try-catch block

व्याख्या

उपरोक्त उदाहरण में a[3] = 10 / 0 स्टेटमेंट ArithmeticException फेंकता है (0 से विभाजन)। चूंकि पहला catch ब्लॉक ArithmeticException को हैंडल करता है, इसलिए वही निष्पादित होता है। बाकी catch ब्लॉक नजरअंदाज कर दिए जाते हैं।

महत्वपूर्ण नियम

  • क्रम मायने रखता है: सबक्लास अपवाद पहले, सुपरक्लास बाद में। अगर आप catch (Exception e) को पहले रख देंगे, तो वह सभी अपवादों को पकड़ लेगा और बाद के विशिष्ट catch ब्लॉक अनरीचेबल (unreachable) हो जाएंगे, जिससे कंपाइल टाइम एरर आएगा।
  • finally ब्लॉक वैकल्पिक है लेकिन यदि मौजूद है तो सभी catch ब्लॉक्स के बाद आता है।
  • Java 7+ में मल्टी-कैच (Multi-catch) का उपयोग करके एक ही catch ब्लॉक में कई अपवाद प्रकारों को पकड़ा जा सकता है: catch (IOException | SQLException e)।

Java 7+ Multi-catch उदाहरण

try {
    // कोड जो IOException या SQLException फेंक सकता है
} catch (IOException | SQLException e) {
    // दोनों अपवादों को यहां हैंडल करें
    e.printStackTrace();
}

निष्कर्ष: मल्टीपल catch ब्लॉक विभिन्न प्रकार के अपवादों को अलग-अलग तरीके से हैंडल करने की अनुमति देते हैं। सही क्रम (विशिष्ट से सामान्य) बनाए रखना महत्वपूर्ण है।

  1. - क्या Java में बिना एब्सट्रैक्ट मेथड्स के एब्सट्रैक्ट क्लास परिभाषित कर सकते हैं?

    हां, हम Java में बिना एब्सट्रैक्ट मेथड्स के एब्सट्रैक्ट क्लास घोषित कर सकते हैं। एक एब्सट्रैक्ट क्लास का अर्थ है इम्प्लीमेंटेशन को छिपाना और यूजर को फंक्शन डेफिनिशन दिखाना। एक एब्सट्रैक्ट क्लास में एब्सट्रैक्ट मेथड्स और नॉन-एब्सट्रैक्ट मेथड्स दोनों हो सकते हैं। एक एब्सट्रैक्ट क्लास के लिए, हम सीध

  1. - Java में catch या finally ब्लॉक में return स्टेटमेंट रख सकते हैं?

    हां, Java में हम किसी मेथड का return स्टेटमेंट catch और finally ब्लॉक में लिख सकते हैं। ऐसी स्थिति हो सकती है जहां मेथड का रिटर्न टाइप हो और हम शर्तों के आधार पर मेथड के किसी भी भाग से मान वापस कर सकते हैं। अगर हम catch ब्लॉक में मान वापस करते हैं और मेथड के अंत में भी return स्टेटमेंट रखते हैं,

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

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