"अहो. तू आहेस. मी तुला शोधत आहे."

"काही घडले का?"

"नाही, पण आम्ही अजून अभ्यास करत आहोत."

"ठीक आहे. मी ऐकत आहे."

"मी तुम्हाला अपवादांबद्दल आणखी काही गोष्टी सांगू इच्छितो:"

"जावा 7 मध्ये, एकापेक्षा जास्त कॅच ब्लॉक्स जोडून ट्राय-कॅच कन्स्ट्रक्ट किंचित वाढवले ​​गेले . हे उदाहरण पहा:"

जावा ५
try
{}
 catch (IOException ex)
{
 logger.log(ex);
 throw ex;
}
 catch (SQLException ex)
{
 logger.log(ex);
 throw ex;
}
जावा ७
try
{}
 catch (IOException | SQLException ex)
{
 logger.log(ex);
 throw ex;
}

"म्हणून आता आपण OR ऑपरेटर ('|' बायनरी किंवा आहे) द्वारे विभक्त केलेले अनेक अपवाद लिहू शकतो का?"

"बरोबर आहे. सोयीस्कर नाही का?"

"हम्म. पण कॅच ब्लॉकमध्ये अपवाद ऑब्जेक्टचा प्रकार काय असेल?"

"शेवटी, IOException ला त्याच्या पद्धती आहेत आणि SQLException च्या त्याच्या पद्धती आहेत."

"अपवाद प्रकार त्यांच्या सामान्य पूर्वज वर्गाचा असेल."

"अहो. दुसऱ्या शब्दांत, ते बहुधा Exeption किंवा RuntimeException असेल . मग फक्त catch(Exception e) का लिहू नये?"

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

"दुसर्‍या शब्दात, ही योजना वेगवेगळ्या त्रुटी हाताळण्यासाठी डुप्लिकेट कॅच ब्लॉक्सची समस्या सोडवणारी म्हणून ओळखली जाते."

"आह. मला समजले. धन्यवाद, एली."

"एवढंच नाही. मला तुम्हाला शेवटी ब्लॉकबद्दल थोडं सांगायचं आहे ."

"तुम्हाला कदाचित आधीच माहित असेल की, हा ब्लॉक नेहमी कार्यान्वित केला जातो."

"आणि जेव्हा मी नेहमी म्हणतो, तेव्हा माझा अर्थ नेहमीच असतो ."

"उदाहरणार्थ:"

शेवटी वापरण्याचे उदाहरण
try
{
 return 1;
}
 finally
{
 return 0;
}

"येथे ट्राय ब्लॉकमध्ये रिटर्न आहे आणि शेवटी ब्लॉकमध्ये रिटर्न आहे . त्यामुळे या पद्धतीचे रिटर्न व्हॅल्यू क्रमांक 0 असेल. "

" काहीही झाले तरी शेवटी ब्लॉक कार्यान्वित होईल. आणि त्याचे रिटर्न स्टेटमेंट इतर रिटर्न व्हॅल्यू त्याच्या स्वतःच्या मूल्यासह ओव्हरराइट करते."

"मी बघतो."

"तथापि, पद्धत एकतर मूल्य परत करू शकते किंवा अपवाद टाकू शकते. "

"म्हणून, जर ट्राय ब्लॉकमध्ये एखादे मूल्य परत केले असेल, परंतु शेवटी ब्लॉक अपवाद दर्शवेल , तर परिणाम अपवाद असेल . "

" ट्राय ब्लॉकमध्ये अपवाद टाकला तर शेवटी ब्लॉकमध्ये रिटर्न स्टेटमेंट असेल तर?"

"मग असे आहे की पद्धत योग्यरित्या कार्य करते आणि रिटर्न स्टेटमेंटमधील मूल्य परत केले जाते.

उदाहरण परिणाम
try
{
 return 1;
}
 finally
{
 return 0;
}
0
try
{
 return 1;
}
 finally
{
 throw new RuntimeException();
}
रनटाइम अपवाद
try
{
 throw new RuntimeException();
}
 finally
{
 return 0;
}
0
try
{
 throw new RuntimeException();
}
 finally
{
 throw new IOException();
}
IO अपवाद

"शेवटची पद्धत अंमलात आणली जाऊ शकत नाही याचे एकमेव कारण म्हणजे System.exit(); मेथडला कॉल करून प्रोग्राम तात्काळ संपुष्टात आणणे ."

उदाहरण
try
{
 System.exit(0);
 return 1;
}
 finally
{
 return 0;
}

"मी बघतो."

"लक्षात ठेवा की हे सर्व विषय सहसा मुलाखतींमध्ये विचारले जातात, त्यामुळे ते समजून घेणे आणि लक्षात ठेवणे तुमच्यासाठी चांगले होईल."