जावा अपवाद हैंडलिंग (उदाहरणों के साथ)

ट्यूटोरियल में, हम उदाहरणों की मदद से जावा में अपवाद हैंडलिंग के विभिन्न तरीकों के बारे में जानेंगे।

अंतिम ट्यूटोरियल में, हमने जावा अपवादों के बारे में सीखा। हम जानते हैं कि अपवाद किसी कार्यक्रम के निष्पादन को असामान्य रूप से समाप्त करते हैं।

यही कारण है कि अपवादों को संभालना महत्वपूर्ण है। जावा में अपवादों को संभालने के लिए विभिन्न दृष्टिकोणों की एक सूची यहाँ दी गई है।

  • प्रयास करें … ब्लॉक को पकड़ें
  • अंत में ब्लॉक करें
  • कीवर्ड फेंको और फेंको

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क्लॉज में निर्दिष्ट होना चाहिए ।

अधिक जानने के लिए, जावा थ्रो और थ्रो पर जाएं।

दिलचस्प लेख...