ट्यूटोरियल में, हम उदाहरणों की मदद से जावा में अपवाद हैंडलिंग के विभिन्न तरीकों के बारे में जानेंगे।
अंतिम ट्यूटोरियल में, हमने जावा अपवादों के बारे में सीखा। हम जानते हैं कि अपवाद किसी कार्यक्रम के निष्पादन को असामान्य रूप से समाप्त करते हैं।
यही कारण है कि अपवादों को संभालना महत्वपूर्ण है। जावा में अपवादों को संभालने के लिए विभिन्न दृष्टिकोणों की एक सूची यहाँ दी गई है।
- प्रयास करें … ब्लॉक को पकड़ें
- अंत में ब्लॉक करें
- कीवर्ड फेंको और फेंको
1. Java try… catch block
जावा में अपवादों को संभालने के लिए ट्राइ-कैच ब्लॉक का उपयोग किया जाता है। यहाँ try… catch
ब्लॉक का सिंटैक्स है :
try ( // code ) catch(Exception e) ( // code )
यहां, हमने कोड रखा है जो try
ब्लॉक के अंदर एक अपवाद उत्पन्न कर सकता है । प्रत्येक try
ब्लॉक के बाद एक catch
ब्लॉक होता है।
जब कोई अपवाद होता है, तो यह catch
ब्लॉक द्वारा पकड़ा जाता है । catch
ब्लॉक के बिना नहीं किया जा सकता try
ब्लॉक।
उदाहरण: एक्सेप्शन हैंडलिंग ट्राई… कैच
class Main ( public static void main(String() args) ( try ( // code that generate exception int divideByZero = 5 / 0; System.out.println("Rest of code in try block"); ) catch (ArithmeticException e) ( System.out.println("ArithmeticException => " + e.getMessage()); ) ) )
आउटपुट
अंकगणित अपवाद => / शून्य से
उदाहरण में, हम एक संख्या को विभाजित करने का प्रयास कर रहे हैं 0
। यहाँ, यह कोड एक अपवाद उत्पन्न करता है।
अपवाद को संभालने के लिए, हमने कोड 5 / 0
को try
ब्लॉक के अंदर रखा है । अब जब अपवाद होता है, तो try
ब्लॉक के अंदर का बाकी कोड छोड़ दिया जाता है।
catch
ब्लॉक पकड़ता अपवाद और बयानों कैच ब्लॉक के अंदर निष्पादित किया जाता है।
यदि try
ब्लॉक में कोई भी स्टेटमेंट अपवाद नहीं बनाता है, तो catch
ब्लॉक को छोड़ दिया जाता है।
2. जावा अंत में ब्लॉक
जावा में, finally
ब्लॉक को हमेशा बिना किसी अपवाद के निष्पादित किया जाता है चाहे कोई अपवाद हो या नहीं।
finally
ब्लॉक वैकल्पिक है। और, प्रत्येक try
ब्लॉक के लिए, केवल एक finally
ब्लॉक हो सकता है ।
finally
ब्लॉक का मूल सिंटैक्स है:
try ( //code ) catch (ExceptionType1 e1) ( // catch block ) finally ( // finally block always executes )
यदि अपवाद होता है, तो finally
ब्लॉक को ब्लॉक के बाद निष्पादित किया जाता try… catch
है। अन्यथा, यह प्रयास ब्लॉक के बाद निष्पादित किया जाता है। प्रत्येक try
ब्लॉक के लिए, केवल एक finally
ब्लॉक हो सकता है ।
उदाहरण: अंत में ब्लॉक का उपयोग करके जावा एक्सेप्शन हैंडलिंग
class Main ( public static void main(String() args) ( try ( // code that generates exception int divideByZero = 5 / 0; ) catch (ArithmeticException e) ( System.out.println("ArithmeticException => " + e.getMessage()); ) finally ( System.out.println("This is the finally block"); ) ) )
आउटपुट
ArithmeticException => / by zero यह अंततः ब्लॉक है
उपरोक्त उदाहरण में, हम ब्लॉक के अंदर 0 से एक संख्या को विभाजित कर रहे हैं try
। यहाँ, यह कोड एक उत्पन्न करता है ArithmeticException
।
अपवाद catch
ब्लॉक द्वारा पकड़ा गया है । और, फिर finally
ब्लॉक निष्पादित किया जाता है।
नोट : यह finally
ब्लॉक का उपयोग करने के लिए एक अच्छा अभ्यास है । यह इसलिए है क्योंकि इसमें महत्वपूर्ण सफाई कोड शामिल हो सकते हैं,
- कोड जो गलती से वापसी, जारी रखने या तोड़ने से छूट सकता है
- फ़ाइल या कनेक्शन बंद करना
3. जावा थ्रो और कीवर्ड को फेंकता है
जावा throw
कीवर्ड का उपयोग एक अपवाद को स्पष्ट रूप से फेंकने के लिए किया जाता है।
जब हम throw
एक अपवाद होते हैं, तो प्रोग्राम का प्रवाह try
ब्लॉक से catch
ब्लॉक में चला जाता है।
उदाहरण: जावा थ्रो का उपयोग करते हुए अपवाद हैंडलिंग
class Main ( public static void divideByZero() ( // throw an exception throw new ArithmeticException("Trying to divide by 0"); ) public static void main(String() args) ( divideByZero(); ) )
आउटपुट
थ्रेड में मुख्य "java.lang.ArithmeticException" अपवाद: Main.mivideByZero (Main.java) पर Main.main (Main.java:9) पर 0 से विभाजित करने का प्रयास
उपरोक्त उदाहरण में, हम कीवर्ड ArithmeticException
का उपयोग करके स्पष्ट रूप से फेंक रहे हैं throw
।
इसी प्रकार, throws
कीवर्ड का उपयोग उस पद्धति के भीतर होने वाले अपवादों के प्रकार को घोषित करने के लिए किया जाता है। इसका उपयोग विधि घोषणा में किया जाता है।
उदाहरण: जावा कीवर्ड को फेंकता है
import java.io.*; class Main ( // declareing the type of exception public static void findFile() throws IOException ( // code that may generate IOException File newFile = new File("test.txt"); FileInputStream stream = new FileInputStream(newFile); ) public static void main(String() args) ( try ( findFile(); ) catch (IOException e) ( System.out.println(e); ) ) )
आउटपुट
java.io.FileNotFoundException: test.txt (सिस्टम निर्दिष्ट फ़ाइल नहीं ढूँढ सकता है)
जब हम इस कार्यक्रम चलाने के लिए, यदि फ़ाइल test.txt मौजूद नहीं है, FileInputStream
एक फेंकता है FileNotFoundException
जो फैली IOException
वर्ग।
यह findFile()
विधि निर्दिष्ट करती है कि IOException
फेंकी जा सकती है। main()
विधि इस पद्धति को कॉल करती है और अपवाद को संभालती है यदि इसे फेंक दिया जाता है।
यदि कोई विधि अपवादों को नहीं संभालती है, तो इसके भीतर होने वाले अपवादों का प्रकार throws
क्लॉज में निर्दिष्ट होना चाहिए ।
अधिक जानने के लिए, जावा थ्रो और थ्रो पर जाएं।