1. throwऑपरेटर

जेव्हा एखादा अपवाद ब्लॉकद्वारे पकडला जातो catchआणि जोपर्यंत तो Java मशीनवर टाकला जात नाही तोपर्यंत ती फक्त एक वस्तू असते जी वारशाने मिळते Exception(किंवा त्याऐवजी, Throwable). अपवाद ऑब्जेक्टमध्ये स्वतः कोणतेही जादुई गुणधर्म नाहीत.

अपवाद कसे कार्य करतात याचे सर्व तर्क हे जावा मशीनच्या वर्तनाचा एक विशेष मार्ग आहे जेव्हा अपवाद टाकला जातो.

तुम्ही Java मशीनमध्ये पकडलेला अपवाद नेहमी पुन्हा थ्रू करू शकता. हे करण्यासाठी, आपल्याला 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तरीही ब्लॉक कार्यान्वित होईल.

तसे, जर तुम्हाला अपवाद पकडायचा नसेल, परंतु तुम्हाला ब्लॉकची आवश्यकता असेल , तर construct: a block finallyसाठी शॉर्टहँड नोटेशन वापरा . हे असे काहीतरी दिसते:try-catch-finallytry-finally

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