1. throwसंचालक

जब एक catchब्लॉक द्वारा एक अपवाद पकड़ा जाता है, और जब तक इसे जावा मशीन पर नहीं फेंका जाता है, यह केवल एक वस्तु है जो इनहेरिट करती है Exception(या बल्कि, Throwable)। अपवाद वस्तु में कोई जादुई गुण नहीं होता है।

अपवाद कैसे काम करते हैं, इसके सभी तर्क केवल एक विशेष तरीका है जब जावा मशीन एक अपवाद फेंके जाने पर व्यवहार करती है।

आप हमेशा जावा मशीन में पकड़े गए अपवाद को फिर से फेंक सकते हैं। ऐसा करने के लिए, आपको throwऑपरेटर का उपयोग करने की आवश्यकता है:

throw exception;

उदाहरण:

कोड कंसोल आउटपुट
try
{
   int d = 2/0;
}
catch(Exception except)
{
   System.out.println("Caught the exception");
   throw except;
}
Caught the exception

इस कोड में, हमने एक अपवाद पकड़ा, स्क्रीन पर इसके बारे में एक संदेश प्रदर्शित किया और फिर इसे फिर से फेंक दिया।

catchएक ही tryब्लॉक में अन्य ब्लॉकों द्वारा एक अपवाद को पकड़ा नहीं जा सकता है ।


2. आपके अपवाद

वैसे, आप स्वयं एक अपवाद वस्तु बना सकते हैं: यह केवल एक वस्तु है जिसका प्रकार है Exceptionया एक वर्ग जो इसे प्राप्त करता है। और इसे फेंक दो।

यह सुनने में जितना आसान लगता है, उससे कहीं ज्यादा आसान है। उदाहरण:

कोड कंसोल आउटपुट
try
{
   throw new RuntimeException();
}
catch(Exception except)
{
   System.out.println("Caught the exception");
   throw except;
}
Caught the exception

उपरोक्त उदाहरण में, हमने एक नया अपवाद ऑब्जेक्ट बनाया जिसका प्रकार है RuntimeExceptionऔर तुरंत throwऑपरेटर का उपयोग करके इसे फेंक दिया।

इसे तुरंत ब्लॉक द्वारा पकड़ा जाएगा catch, क्योंकि RuntimeException इनहेरिट करती है Exception। कोड catch (Exception except)उन सभी वर्गों की अपवाद वस्तुओं को पकड़ता है जो Exceptionवर्ग को प्राप्त करते हैं।



3. finallyखोजशब्द

एक और महत्वपूर्ण बिंदु। कभी-कभी एक प्रोग्रामर को कोड में अपवाद होने के बावजूद कुछ कार्रवाई करने की आवश्यकता होती है। उदाहरण के लिए, मान लीजिए कि हमने लिखने के लिए एक फाइल खोली है। खोली गई फ़ाइल को कॉल करके बंद किया जाना चाहिए close()

try
{
   // Code where an exception might occur
}
catch(ExceptionType name)
{
   // Exception handling code
}
finally
{
   // Code that must executed no matter what happens
}

इन अनिवार्य क्रियाओं को करने के लिए, निर्माण में एक अन्य प्रकार का ब्लॉक ( finally) जोड़ा गया try-catch, जिससे try-catch-finallyनिर्माण का निर्माण हुआ। यह इस तरह दिख रहा है:

उदाहरण:

FileInputStream source = null;
try
{
   source = new FileInputStream("c:\\note.txt");
   source.read();
}
catch(Exception except)
{
   System.out.println("Caught the exception");
   throw except;
}
finally
{
   if (source != null)
      source.close();
}

finallyब्लॉक में कोड किसी भी स्थिति में निष्पादित होगा, भले ही कोई अपवाद हो। यहां तक ​​कि अगर एक अपवाद को फेंक दिया जाता है और पकड़ा नहीं जाता है, finallyतब भी ब्लॉक निष्पादित होगा।

वैसे, यदि आप अपवाद नहीं पकड़ना चाहते हैं, लेकिन आपको ब्लॉक की आवश्यकता है finally, तो निर्माण के लिए शॉर्टेंड नोटेशन का उपयोग करें try-catch-finally: एक try-finallyब्लॉक। ऐसा कुछ दिखता है:

try
{
   // Code where an exception might occur
}
finally
{
   // Code that must executed no matter what happens
}