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

Java में Exception क्लास और Error क्लास में क्या अंतर है?


Exception क्लास और Error क्लास दोनों java.lang.Throwable क्लास के सबक्लास हैं। हम रनटाइम पर अपवादों को हैंडल कर सकते हैं लेकिन एरर्स को हैंडल नहीं कर सकते।

  • Exceptions (अपवाद): ये रनटाइम पर होने वाली तार्किक त्रुटियों (logical errors) को दर्शाने वाले ऑब्जेक्ट्स हैं जो JVM को "अस्पष्टता" (ambiguity) की स्थिति में डाल देते हैं। JVM द्वारा इन रनटाइम त्रुटियों को दर्शाने के लिए स्वचालित रूप से बनाए गए ऑब्जेक्ट्स को अपवाद (Exception) कहा जाता है।
  • Errors (त्रुटियां): Error Throwable क्लास का सबक्लास है जो गंभीर समस्याओं को इंगित करता है जिन्हें एक उचित एप्लिकेशन को पकड़ने (catch) का प्रयास नहीं करना चाहिए। अधिकांश ऐसी त्रुटियां असामान्य स्थितियां (abnormal conditions) होती हैं।
  • यदि कोई अपवाद होता है, तो हम इसे try और catch ब्लॉक का उपयोग करके हैंडल कर सकते हैं। यदि कोई त्रुटि होती है, तो हम इसे हैंडल नहीं कर सकते, प्रोग्राम का निष्पादन समाप्त हो जाएगा।
  • अपवाद में दो प्रकार होते हैं: Checked Exception और Unchecked Exception। Error डिफ़ॉल्ट रूप से अनचेक्ड अपवाद (unchecked exception) है।
  • एक अपवाद java.lang.Exception टाइप का होता है और एक त्रुटि java.lang.Error टाइप की होती है।

विस्तृत तुलना

विशेषताException (अपवाद)Error (त्रुटि)
पैरेंट क्लासjava.lang.Exceptionjava.lang.Error
कारणप्रोग्रामिंग त्रुटियां, अमान्य इनपुट, संसाधन अनुपलब्धतासिस्टम स्तर की गंभीर समस्याएं (मेमोरी, स्टैक, लिंकेज)
हैंडलिंगtry-catch से हैंडल किया जा सकता है और करना चाहिएहैंडल नहीं करना चाहिए (unrecoverable)
प्रकारChecked और Unchecked दोनोंकेवल Unchecked
कंपाइलर जांचChecked exceptions की कंपाइलर जांच करता हैकंपाइलर जांच नहीं करता
उदाहरणIOException, SQLException, NullPointerExceptionOutOfMemoryError, StackOverflowError, NoClassDefFoundError
रिकवरीसंभव (अपवाद हैंडल करके प्रोग्राम जारी रख सकते हैं)आमतौर पर असंभव (JVM अस्थिर स्थिति में)

Exception श्रेणी (Hierarchy)

java.lang.Throwable
    ├── java.lang.Error
    │     ├── OutOfMemoryError
    │     ├── StackOverflowError
    │     ├── NoClassDefFoundError
    │     └── ...
    └── java.lang.Exception
          ├── java.lang.RuntimeException (Unchecked)
          │     ├── NullPointerException
          │     ├── ArrayIndexOutOfBoundsException
          │     ├── IllegalArgumentException
          │     └── ...
          └── Checked Exceptions
                ├── IOException
                ├── SQLException
                ├── ClassNotFoundException
                └── ...

कब क्या उपयोग करें?

  • Checked Exceptions: उन स्थितियों के लिए जिन्हें कॉलर द्वारा उचित रूप से हैंडल किया जा सकता है (जैसे फाइल नहीं मिली, नेटवर्क त्रुटि)।
  • Unchecked Exceptions (RuntimeException): प्रोग्रामिंग बग्स के लिए (जैसे नल पॉइंटर, गलत इंडेक्स, अवैध आर्गुमेंट)।
  • Errors: कभी भी catch न करें। ये JVM/सिस्टम स्तर की विफलताएं हैं जिनसे रिकवरी संभव नहीं है।

निष्कर्ष: अपवाद (Exceptions) एप्लिकेशन स्तर की समस्याएं हैं जिन्हें हैंडल किया जा सकता है और करना चाहिए, जबकि त्रुटियां (Errors) सिस्टम स्तर की गंभीर समस्याएं हैं जिन्हें पकड़ने का प्रयास नहीं करना चाहिए।

  1. Java में JTextField और JTextArea में क्या अंतर है? Java में JTextField और JTextArea में क्या अंतर है?

    Java में JTextField और JTextArea के बीच मुख्य अंतर यह है कि एक JTextField GUI एप्लिकेशन में टेक्स्ट की सिंगल लाइन एंटर करने की अनुमति देता है जबकि JTextArea GUI एप्लिकेशन में टेक्स्ट की मल्टीपल लाइन्स एंटर करने की अनुमति देता है। JTextField एक JTextField सबसे महत्वपूर्ण कंपोनेंट्स में से एक है जो

  1. Java में JFrame और JDialog में क्या अंतर है? Java में JFrame और JDialog में क्या अंतर है?

    JFrame फ्रेम में जोड़े गए कंपोनेंट्स को इसकी सामग्री कहा जाता है, इन्हें contentPane द्वारा प्रबंधित किया जाता है। JFrame में कंपोनेंट जोड़ने के लिए, हमें इसके contentPane का उपयोग करना चाहिए। एक JFrame में टाइटल, बॉर्डर, (वैकल्पिक) मेनू बार और यूज़र-स्पेसिफाइड कंपोनेंट्स के साथ एक विंडो होती है। ए

  1. Java में GridLayout और GridBagLayout में क्या अंतर है? Java में GridLayout और GridBagLayout में क्या अंतर है?

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