"हाय, अमीगो!"

"हाय, ऐली! जीवन कैसा है?"

"बहुत बढ़िया, धन्यवाद। आप कैसे हैं?"

"बहुत बढ़िया, आज सुबह मुझे कई नई चीज़ें समझाई गईं।"

"ठीक है, यह बहुत अच्छा है। तुम थके नहीं हो?"

"हाँ, वह है। मैं थोड़ा थक गया हूँ।"

"फिर आप भाग्यशाली हो गए। मैं आज एक बड़े, जटिल विषय को कवर करना चाहता था, लेकिन आखिरी मिनट में मैंने अपना विचार बदल दिया और एक छोटे, आसान विषय को कवर करने का फैसला किया।"

"छोटा और आसान? मैं तैयार हूँ।"

"आज हम विस्तार से अपवादों के विषय की जाँच करेंगे ।"

"क्या आप त्रुटि प्रबंधन के बारे में बात कर रहे हैं?"

"आपको अपवादों को त्रुटियों के रूप में नहीं सोचना चाहिए। अपवाद रिपोर्ट की तरह अधिक हैं कि 'कुछ अप्रत्याशित हुआ'। इन रिपोर्टों के आधार पर, आप वैकल्पिक कार्रवाइयों का प्रस्ताव कर सकते हैं।"

"यह सभी विधियों के बारे में है।  जब आप किसी विधि को कॉल करते हैं, तो वह वह करने का वादा करती है जिसे करने के लिए उसे बुलाया गया था। "

"जब कोई विधि, किसी भी कारण से, वह नहीं कर सकती जो उसे करने के लिए कहा गया था, तो उसे कॉल करने वाले को बताना होगा।"

"दूसरे शब्दों में, सबसे बुरी बात यह हो सकती है कि कोई तरीका अपना काम न करे और इसके बारे में किसी को न बताए। इससे बुरा कुछ नहीं हो सकता। ऐसा होने पर आप स्थिति पर नियंत्रण खो देते हैं। "

"जब आप एक नए प्रोग्रामर होते हैं, तो ऐसा लगता है जैसे आप केवल तरीकों को कॉल करते हैं और वे निश्चित रूप से वही करते हैं जो आपने उन्हें करने के लिए कहा था।"

"जब आप एक अनुभवी प्रोग्रामर होते हैं, तो आप जानते हैं कि ऐसे दर्जनों कारक हो सकते हैं जो किसी विधि की अपनी नौकरी करने की क्षमता को प्रभावित करते हैं, और ऐसे कई मामले हैं जो किसी विधि को अपना काम पूरा करने से रोक सकते हैं।"

"प्रोग्रामर के दृष्टिकोण से, यह एक हज़ार गुना बेहतर है यदि कोई प्रोग्राम त्रुटि का सामना करने पर समाप्त हो जाता है, यदि प्रोग्राम में कोई त्रुटि आती है और फिर उपयोगकर्ता को पता चले बिना (गलत तरीके से) काम करना जारी रखता है।"

"तो प्रोग्राम कुछ गलत दिखा रहा है अगर प्रोग्राम बंद हो जाए और सभी डेटा खो जाए तो इससे भी बदतर हो सकता है?"

"आपको क्या लगा कि प्रोग्राम बस कुछ गलत दिखा रहा है? हो सकता है कि प्रोग्राम में बहुत सारे बग हों और आपका सारा डेटा अपरिवर्तनीय रूप से खो जाएगा? मान लें कि आपने 3 घंटे के लिए टेक्स्ट टाइप किया है, लेकिन इसमें से कोई भी सहेजा नहीं जाएगा क्योंकि ए त्रुटि जो सिर्फ दो मिनट के बाद हुई।"

"जब एक नौसिखिए प्रोग्रामर अपवादों का सामना करता है, तो वह निराश हो जाता है।"

"लेकिन वास्तव में, अपवाद उन सभी संभावित परिदृश्यों को प्रकट करते हैं जिन्हें उन्हें पूर्वाभास करना चाहिए था लेकिन नहीं किया।"

"आप अपवादों को नहीं संभालना चुन सकते हैं और यह आपको एक बुरा प्रोग्रामर बना देगा। लेकिन अगर आपके तरीके अपवादों को नहीं फेंकते हैं, तो आप बिल्कुल भी प्रोग्रामर नहीं हैं - क्योंकि आप इस सरल सत्य को समझने में विफल रहे हैं:"

"एक विधि या तो वह करती है जो इसे करने के लिए लिखी गई थी, या यह एक अपवाद फेंकता है। कोई तीसरा विकल्प नहीं है!"

"ठीक है, मैं तुम पर विश्वास करता हूँ। मैं अपवादों का उपयोग करने का वादा करता हूँ।"

"बहुत बढ़िया। तो मैं आपको अपवादों के पदानुक्रम के बारे में बताता हूँ:"

अपवाद पदानुक्रम, त्रुटियाँ - 1

"अपवाद पदानुक्रम चार वर्गों पर आधारित है।"

"सबसे निचला आधार वर्ग थ्रोएबल है ।"

" त्रुटि और अपवाद वर्ग इसे प्राप्त करते हैं।"

" RuntimeException अपवाद को इनहेरिट करता है ।"

" त्रुटि वर्ग JVM त्रुटियों के लिए आधार वर्ग है जैसे कि StackOverFlow , OutOfMemory , ..."

"एक प्रोग्राम आमतौर पर ऐसी त्रुटियों से ठीक नहीं हो सकता है, जो इसे समाप्त करने की ओर ले जाता है।"

"वास्तव में, क्या किया जा सकता है यदि कार्यक्रम के सामान्य रूप से चलने के लिए पर्याप्त मेमोरी नहीं है या स्टैक ओवरफ़्लो हो गया है?"

" अपवाद एक प्रोग्राम द्वारा फेंके गए सभी सामान्य अपवादों के लिए आधार वर्ग है।  रनटाइम अपवाद एक विशेष प्रकार का अपवाद है जिसमें थोड़ा अलग नियम हैं।"

"क्या रहे हैं?"

"यही तो मैं अब समझाने जा रहा हूँ।"

"जैसा कि आपको शायद याद होगा, अपवाद दो श्रेणियों में आते हैं: चेक किया गया और अनचेक किया गया ।"

"यदि कोई विधि चेक किए गए अपवादों को फेंकती है, तो उसे कॉल करने वाली विधि को कॉल को ट्राइ-कैच ब्लॉक में लपेटना चाहिए। ठीक है, या तो वह या विधि हस्ताक्षर में स्पष्ट रूप से इंगित करके अपवाद (इसके कॉलर को) को फिर से फेंक दें ।"

"ये नियम/प्रतिबंध अनियंत्रित अपवादों पर लागू नहीं होते हैं।"

"इसलिए, सभी अपवाद जो अपवाद को इनहेरिट करते हैं, को चेक किया गया माना जाता है। उन अपवादों को छोड़कर जो रनटाइम एक्सेप्शन को इनहेरिट करते हैं, जिन्हें अनचेक माना जाता है।"

"उह-हह। मुझे याद है कि आपने मुझे पहले ऐसा ही कुछ बताया था।"

"अमीगो! वे हर साक्षात्कार में अपवाद पदानुक्रम के बारे में पूछते हैं । मैं इसे फिर से कहूंगा - हर साक्षात्कार । आपको इस विषय को पूरी तरह से जानने की जरूरत है।"

"ठीक है। मैं सब कुछ फिर से पढ़ूंगा और इसका पता लगाऊंगा। मेरी मदद करने के लिए धन्यवाद, ऐली।"