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

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


हां, Java में हम किसी मेथड का return स्टेटमेंट catch और finally ब्लॉक में लिख सकते हैं।

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

उदाहरण 1: catch ब्लॉक में return

public class CatchReturn {
    int calc() {
        try {
            int x = 12 / 0; // ArithmeticException
        } catch (Exception e) {
            return 1; // catch में return
        }
        return 10; // यह तभी चलेगा जब कोई अपवाद न आए
    }

    public static void main(String[] args) {
        CatchReturn cr = new CatchReturn();
        System.out.println(cr.calc()); // आउटपुट: 1
    }
}

आउटपुट

1

उदाहरण 2: finally ब्लॉक में return (सबसे महत्वपूर्ण व्यवहार)

public class FinallyReturn {
    int calc() {
        try {
            return 10; // try में return
        } catch (Exception e) {
            return 20; // catch में return
        } finally {
            return 30; // finally में return - यह अंतिम मान होगा
        }
    }

    public static void main(String[] args) {
        FinallyReturn fr = new FinallyReturn();
        System.out.println(fr.calc()); // आउटपुट: 30
    }
}

आउटपुट

30

महत्वपूर्ण बिंदु

परिदृश्यपरिणाम
try में return, finally में returnfinally का return मान वापस होता है
catch में return, finally में returnfinally का return मान वापस होता है
try में return, finally बिना returntry का return मान वापस होता है
अपवाद आता है, catch में return, finally बिना returncatch का return मान वापस होता है

सर्वोत्तम अभ्यास: finally ब्लॉक में return स्टेटमेंट का उपयोग करने से बचें क्योंकि यह अपवाद प्रबंधन के प्रवाह को भ्रमित कर सकता है और try/catch के रिटर्न मान को दबा देता है। finally का उपयोग मुख्य रूप से संसाधनों को बंद करने (cleanup) के लिए करें।

  1. Java में pack() मेथड का उपयोग कब कर सकते हैं? Java में pack() मेथड का उपयोग कब कर सकते हैं?

    pack() मेथड Java में Window क्लास में परिभाषित है और यह फ्रेम को इस तरह आकार देता है कि इसकी सभी सामग्री उनके पसंदीदा आकार पर या उससे ऊपर हैं। pack() मेथड का एक विकल्प setSize() या setBounds() मेथड्स को कॉल करके फ्रेम आकार को स्पष्ट रूप से स्थापित करना है। सामान्य तौर पर, pack() मेथड का उपयोग setSiz

  1. जावा में invokeLater() मेथड को कैसे कॉल करें? जावा में invokeLater() मेथड को कैसे कॉल करें?

    invokeLater() मेथड SwingUtilities क्लास का एक स्टैटिक मेथड है और इसका उपयोग AWT इवेंट डिस्पैचर थ्रेड में असिंक्रोनसली कार्य करने के लिए किया जा सकता है। SwingUtilities.invokeLater() मेथड SwingUtilities.invokeAndWait() की तरह काम करता है सिवाय इसके कि यह अनुरोध को इवेंट क्यू पर रखता है और तुरंत वापस

  1. Java में JComboBox के आइटम्स को कैसे सॉर्ट करें? Java में JComboBox के आइटम्स को कैसे सॉर्ट करें?

    एक JComboBox, JComponent क्लास का एक सबक्लास है और यह एक टेक्स्ट फील्ड और एक ड्रॉप-डाउन लिस्ट का संयोजन है जिससे यूजर एक मान चुन सकता है। एक JComboBox यूजर के कॉम्बो बॉक्स पर एक्शन करने पर ActionListener, ChangeListener, और ItemListener इंटरफेस उत्पन्न कर सकता है। डिफ़ॉल्ट रूप से, एक JComboBox आइटम्