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

"हाय, एली! आयुष्य कसं आहे?"

"उत्तम, धन्यवाद. कसे आहात?"

"छान, आज सकाळी मला अनेक नवीन गोष्टी समजावून सांगण्यात आल्या."

"बरं, छान आहे. तू थकला नाहीस?"

"हो, तेच आहे. मी जरा थकलोय."

"मग तू भाग्यवान होतास. मला आज एक मोठा, गुंतागुंतीचा विषय कव्हर करायचा होता, पण शेवटच्या क्षणी मी माझा विचार बदलला आणि एक छोटा, सोपा विषय कव्हर करायचा ठरवला."

"लहान आणि सोपे? मी तयार आहे."

"आज आपण अपवाद या विषयाचे तपशीलवार परीक्षण करू."

"तुम्ही एरर हाताळण्याबद्दल बोलत आहात?"

"तुम्ही अपवादांचा त्रुटी म्हणून विचार करू नये. अपवाद हे 'काहीतरी अनपेक्षित घडले' अशा अहवालांसारखे असतात. या अहवालांच्या आधारे, तुम्ही पर्यायी कृती सुचवू शकता."

"हे सर्व पद्धतींबद्दल आहे.  जेव्हा तुम्ही एखाद्या पद्धतीला कॉल करता, तेव्हा ते जे करण्यास सांगितले होते ते करण्याचे वचन देते. "

"जेव्हा एखादी पद्धत, कोणत्याही कारणास्तव, तिला जे करायला सांगितले होते ते करू शकत नाही, तेव्हा ते कॉलरला कळवावे लागेल."

"दुसर्‍या शब्दात, सर्वात वाईट गोष्ट घडू शकते ती म्हणजे एखाद्या पद्धतीचे काम न करणे आणि त्याबद्दल कोणालाही न सांगणे. यापेक्षा वाईट काहीही असू शकत नाही. जेव्हा असे घडते तेव्हा तुम्ही परिस्थितीवरील नियंत्रण गमावता. "

"जेव्हा तुम्ही नवीन प्रोग्रामर असाल, तेव्हा असे दिसते की तुम्ही फक्त पद्धतींना कॉल करता आणि तुम्ही त्यांना जे करायला सांगितले ते ते नक्की करतील."

"जेव्हा तुम्ही एक अनुभवी प्रोग्रामर असता, तेव्हा तुम्हाला माहीत आहे की, पद्धतीच्या कामाच्या क्षमतेवर परिणाम करणारे डझनभर घटक असू शकतात आणि अशी अनेक प्रकरणे आहेत जी एखाद्या पद्धतीला तिचे काम पूर्ण करण्यापासून रोखू शकतात."

"प्रोग्रामरच्या दृष्टीकोनातून, प्रोग्राममध्ये त्रुटी आढळल्यास आणि नंतर काय झाले हे वापरकर्त्याच्या लक्षात न येता (चुकीच्या पद्धतीने) कार्य करणे सुरू ठेवण्यापेक्षा प्रोग्रामरच्या दृष्टीकोनातून, जेव्हा एखादा प्रोग्राम त्रुटी आढळतो तेव्हा तो बंद झाला तर ते हजारपट चांगले आहे."

"म्हणून काहीतरी चुकीचे दर्शविणारा प्रोग्राम प्रोग्राम बंद झाला आणि सर्व डेटा गमावला यापेक्षा वाईट असू शकतो?"

"प्रोग्राम काहीतरी चुकीचे दाखवत आहे असे तुम्हाला कशामुळे वाटले? कदाचित प्रोग्राममध्ये बरेच बग असतील आणि तुमचा सर्व डेटा अपूरणीयपणे गमावला जाईल? समजा तुम्ही 3 तास मजकूर टाइप केला असेल, परंतु त्यापैकी काहीही जतन केले जाणार नाही कारण फक्त दोन मिनिटांनंतर उद्भवलेली त्रुटी."

"जेव्हा नवशिक्या प्रोग्रामरला अपवाद येतो तेव्हा तो निराश होतो."

"परंतु प्रत्यक्षात, अपवाद सर्व संभाव्य परिस्थिती प्रकट करतात ज्याचा त्याने अंदाज लावला होता परंतु तसे केले नाही."

"तुम्ही अपवाद न हाताळणे निवडू शकता आणि ते तुम्हाला वाईट प्रोग्रामर बनवतील. परंतु जर तुमच्या पद्धती अपवाद सोडत नाहीत, तर तुम्ही प्रोग्रामर नाही - कारण तुम्ही हे साधे सत्य समजून घेण्यात अयशस्वी झाला आहात:"

"पद्धत एकतर तेच करते जे करायला लिहिलं होतं, किंवा अपवाद टाकते. तिसरा पर्याय नाही!"

"ठीक आहे, मी तुझ्यावर विश्वास ठेवतो. मी अपवाद वापरण्याचे वचन देतो."

"छान. मग मी तुम्हाला अपवादांच्या पदानुक्रमाबद्दल सांगतो:"

अपवाद पदानुक्रम, त्रुटी - १

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

"सर्वात कमी बेस क्लास हा थ्रोएबल आहे ."

" त्रुटी आणि अपवाद वर्ग ते वारसा घेतात."

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

" एरर क्लास हा स्टॅकओव्हरफ्लो , आउटऑफमेमोरी , ... सारख्या JVM त्रुटींसाठी बेस क्लास आहे. "

"एखादा प्रोग्राम सहसा अशा त्रुटींमधून पुनर्प्राप्त करू शकत नाही, ज्यामुळे तो संपुष्टात येतो."

"खरंच, प्रोग्राम सामान्यपणे चालू ठेवण्यासाठी पुरेशी मेमरी नसल्यास किंवा स्टॅक ओव्हरफ्लो असल्यास काय केले जाऊ शकते?"

" अपवाद हा प्रोग्रामद्वारे टाकलेल्या सर्व सामान्य अपवादांसाठी बेस क्लास आहे.  RuntimeException हा एक विशेष प्रकारचा अपवाद आहे ज्याचे नियम थोडे वेगळे आहेत."

"ते काय आहेत?"

"मी आता तेच समजावून सांगणार आहे."

"तुम्हाला कदाचित आठवत असेल, अपवाद दोन श्रेणींमध्ये येतात: चेक केलेले आणि अनचेक केलेले ."

"एखादी पद्धत चेक केलेले अपवाद टाकत असेल, तर ती कॉल करणार्‍या पद्धतीने कॉल ट्राय-कॅच ब्लॉकमध्ये गुंडाळणे आवश्यक आहे. बरं, एकतर ते किंवा पद्धत स्वाक्षरीमध्ये थ्रो स्पष्टपणे दर्शवून अपवाद (त्याच्या कॉलरला) पुन्हा फेकून द्या ."

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

"म्हणून, अपवाद वारसा मिळालेले सर्व अपवाद तपासलेले मानले जातात. RuntimeException इनहेरिट करणारे अपवाद वगळता, जे अनचेक मानले जातात."

"उह-हह. मला आठवतंय की तू मला आधी असं काहीतरी सांगितलंस."

"अमिगो! ते प्रत्येक मुलाखतीत अपवाद पदानुक्रमाबद्दल विचारतात . मी ते पुन्हा सांगेन - प्रत्येक मुलाखतीत . तुम्हाला हा विषय पूर्णपणे माहित असणे आवश्यक आहे."

"ठीक आहे. मी सर्व काही पुन्हा वाचेन आणि समजून घेईन. मला मदत केल्याबद्दल धन्यवाद, एली."