"आह। तुम वहाँ हो। मैं तुम्हें ढूंढ रहा हूँ।"

"कुछ हुआ क्या?"

"नहीं, लेकिन हम अभी भी पढ़ रहे हैं।"

"ठीक है। मैं सुन रहा हूँ।"

"मैं आपको अपवादों के बारे में कुछ और बातें बताना चाहता हूं:"

"जावा 7 में, ट्राई-कैच कंस्ट्रक्शन को कई कैच ब्लॉक के माध्यम से थोड़ा बढ़ाया गया था । इस उदाहरण को देखें:"

जावा 5
try
{
  …
}
 catch (IOException ex)
{
 logger.log(ex);
 throw ex;
}
 catch (SQLException ex)
{
 logger.log(ex);
 throw ex;
}
जावा 7
try
{
  …
}
 catch (IOException | SQLException ex)
{
 logger.log(ex);
 throw ex;
}

"तो क्या अब हम कई अपवादों को लिख सकते हैं जिन्हें OR ऑपरेटरों द्वारा अलग किया गया है ('|' बाइनरी OR है)?"

"यह सही है। क्या यह सुविधाजनक नहीं है?"

"हम्म। लेकिन कैच ब्लॉक के अंदर अपवाद वस्तु का प्रकार क्या होगा?"

"आखिरकार, एक IOException के अपने तरीके हैं, और एक SQLException के अपने तरीके हैं।"

"अपवाद प्रकार उनके सामान्य पूर्वज वर्ग का होगा।"

"आह। दूसरे शब्दों में, यह सबसे अधिक संभावना होगी Exeption या RuntimeException । फिर क्यों न केवल कैच (अपवाद ई) लिखा जाए?"

"कभी-कभी त्रुटियों को व्यक्तिगत रूप से संभालते समय, उन्हें समूहित करना सुविधाजनक होता है, कुछ त्रुटियों को लॉग में लिखना, दूसरों को फिर से हटाना और दूसरों को किसी अन्य तरीके से संभालना।"

"दूसरे शब्दों में, इस योजना को विभिन्न त्रुटियों से निपटने के लिए डुप्लिकेट कैच ब्लॉक की समस्या को हल करने के रूप में पहचाना जाता है।"

"आह। मैं समझ गया। धन्यवाद, ऐली।"

"इतना ही नहीं। मैं आपको अंत में ब्लॉक के बारे में कुछ और बताना चाहता हूं ।"

"जैसा कि आप शायद पहले से ही जानते हैं, यह ब्लॉक हमेशा निष्पादित होता है।"

"और जब मैं हमेशा कहता हूं, तो मेरा मतलब बिल्कुल हमेशा होता है ।"

"उदाहरण के लिए:"

अंत में उपयोग करने का उदाहरण
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();
}
आईओ अपवाद

"अंतिम विधि को निष्पादित न करने का एकमात्र कारण System.exit (); विधि को कॉल करके कार्यक्रम की तत्काल समाप्ति होगी। "

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

"अच्छा ऐसा है।"

"ध्यान रखें कि इन सभी विषयों के बारे में आमतौर पर साक्षात्कारों में पूछा जाता है, इसलिए आपके लिए यह अच्छा होगा कि आप उन्हें समझें और याद रखें।"