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

क्या हम Java में एक try-catch ब्लॉक को दूसरे try-catch ब्लॉक के भीतर घोषित कर सकते हैं?

हाँ, हम एक try-catch ब्लॉक को दूसरे try-catch ब्लॉक के भीतर घोषित कर सकते हैं, इसे नेस्टेड try-catch ब्लॉक कहा जाता है।

नेस्टेड Try-Catch ब्लॉक

  • यदि एक इनर try स्टेटमेंट में किसी विशेष एक्सेप्शन के लिए मिलान करने वाला catch स्टेटमेंट नहीं है, तो कंट्रोल अगले try स्टेटमेंट के कैच हैंडलर्स को ट्रांसफर हो जाता है जिनसे मिलान करने वाले कैच स्टेटमेंट की उम्मीद की जाती है।
  • यह तब तक जारी रहता है जब तक कैच स्टेटमेंट्स में से एक सफल नहीं होता, या जब तक सभी नेस्टेड try स्टेटमेंट्स पूरे नहीं हो जाते।
  • यदि कोई कैच स्टेटमेंट मेल नहीं खाता, तो Java रन-टाइम सिस्टम एक्सेप्शन को हैंडल करेगा।
  • जब नेस्टेड try ब्लॉक्स उपयोग किए जाते हैं, तो इनर try ब्लॉक पहले निष्पादित होता है। इनर try ब्लॉक में थ्रो किया गया कोई भी एक्सेप्शन संबंधित कैच ब्लॉक में पकड़ा जाता है। यदि मिलान करने वाला कैच ब्लॉक नहीं मिलता है, तो आउटर try ब्लॉक के कैच ब्लॉक्स का निरीक्षण किया जाता है जब तक कि सभी नेस्टेड try स्टेटमेंट्स समाप्त नहीं हो जाते। यदि कोई मिलान करने वाला ब्लॉक नहीं मिलता है, तो Java रनटाइम एनवायरनमेंट निष्पादन को हैंडल करता है।

सिंटैक्स

try { 
    स्टेटमेंट 1; 
    स्टेटमेंट 2; 
    try { 
        स्टेटमेंट 1; 
        स्टेटमेंट 2; 
    } 
    catch(Exception e) { 
        // संबंधित एक्सेप्शन पकड़ें 
    } 
} catch(Exception e) { 
    // संबंधित एक्सेप्शन पकड़ें 
} 
.............

उदाहरण

import java.io.*; 

public class NestedTryCatchTest { 
    public static void main (String args[]) throws IOException { 
        int n = 10, result = 0; 
        try { // आउटर try ब्लॉक 
            FileInputStream fis = null; 
            fis = new FileInputStream (new File (args[0])); 
            try { // इनर try ब्लॉक 
                result = n/0; 
                System.out.println("The result is" + result); 
            } 
            catch(ArithmeticException e) { // इनर कैच ब्लॉक 
                System.out.println("Division by Zero"); 
            } 
        } 
        catch (FileNotFoundException e) { // आउटर कैच ब्लॉक 
            System.out.println("File was not found"); 
        } 
        catch(ArrayIndexOutOfBoundsException e) { // आउटर कैच ब्लॉक 
            System.out.println("Array Index Out Of Bounds Exception occured "); 
        } 
        catch(Exception e) { // आउटर कैच ब्लॉक 
            System.out.println("Exception occured" + e); 
        } 
    } 
}

आउटपुट

Array Index Out Of Bounds Exception occured

कमांड लाइन आर्गुमेंट नहीं दिया गया (args[0] एक्सेस), इसलिए ArrayIndexOutOfBoundsException आउटर कैच ब्लॉक द्वारा पकड़ा गया। इनर ब्लॉक में ArithmeticException (n/0) होता लेकिन आउटर पहले फेल हो गया।

  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

  1. - क्या Java में main मेथड को private घोषित कर सकते हैं?

    हां, हम Java में main मेथड को private घोषित कर सकते हैं। यह बिना किसी त्रुटि के सफलतापूर्वक कंपाइल हो जाता है लेकिन रनटाइम पर यह कहता है कि main मेथड पब्लिक नहीं है। उदाहरण class PrivateMainMethod { private static void main(String args[]) { System.out.println(Welcome to Tutorials Poin