जावा में त्रुटि प्रबंधन: try/catch और उससे आगे — पूर्ण गाइड

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

जावा में त्रुटि प्रबंधन का परिचय



प्रोग्रामिंग की दुनिया में त्रुटियाँ अपरिहार्य हैं। वे विभिन्न कारणों से उत्पन्न होती हैं: उपयोगकर्ता द्वारा गलत इनपुट, फ़ाइल की अनुपलब्धता, प्रोग्राम लॉजिक में त्रुटियाँ या नेटवर्क विफलताएँ। जावा भाषा में ऐसी स्थितियों को प्रबंधित करने के लिए एक शक्तिशाली और लचीला तंत्र मौजूद है — अपवाद (exceptions)। सही त्रुटि प्रबंधन केवल अच्छा व्यवहार नहीं है, बल्कि आपके एप्लिकेशन की स्थिरता, विश्वसनीयता और सुरक्षा की गारंटी है।



इस लेख में, हम विस्तार से समझेंगे कि जावा में त्रुटि प्रबंधन कैसे काम करता है, बुनियादी try/catch संरचना से शुरू करके उन्नत तकनीकों जैसे try-with-resources और स्वयं के अपवाद बनाने तक। आप जानेंगे कि चेक किए गए (checked) और अनचेक किए गए (unchecked) अपवादों में क्या अंतर है, और उनका सही उपयोग कैसे करें।



मूल बातें: try/catch और finally संरचना



try और catch ब्लॉक



जावा में अपवाद प्रबंधन का केंद्र try/catch संरचना है। वह कोड जो अपवाद फेंक सकता है, try ब्लॉक में रखा जाता है। यदि इस ब्लॉक में कोई अपवाद उत्पन्न होता है, तो निष्पादन तुरंत संबंधित catch ब्लॉक में चला जाता है, जहाँ इस अपवाद को संभाला जाता है।



public class Main {    public static void main(String[] args) {        try {            int result = 10 / 0; // यह ArithmeticException उत्पन्न करेगा            System.out.println("परिणाम: " + result);        } catch (ArithmeticException e) {            System.out.println("त्रुटि: शून्य से भाग!");            e.printStackTrace(); // डिबगिंग के लिए कॉल स्टैक प्रिंट करता है        }        System.out.println("प्रोग्राम काम करता रहता है...");    }}


ध्यान दें: System.out.println("परिणाम: " + result); पंक्ति निष्पादित नहीं होगी, क्योंकि अपवाद पहले उत्पन्न हुआ। हालाँकि, प्रोग्राम "क्रैश" नहीं होगा — नियंत्रण catch में चला जाएगा, और निष्पादन try/catch ब्लॉक के बाद जारी रहेगा।



एकाधिक catch ब्लॉक



एक try ब्लॉक में विभिन्न प्रकार के अपवादों को संभालने के लिए कई catch ब्लॉक हो सकते हैं। यह याद रखना महत्वपूर्ण है कि अधिक विशिष्ट अपवादों को सामान्य अपवादों से पहले निर्दिष्ट किया जाना चाहिए।



try {    String str = null;    System.out.println(str.length()); // NullPointerException    int[] arr = new int[5];    arr[10] = 100;                   // ArrayIndexOutOfBoundsException} catch (NullPointerException e) {    System.out.println("NullPointerException: " + e.getMessage());} catch (ArrayIndexOutOfBoundsException e) {    System.out.println("ArrayIndexOutOfBoundsException: " + e.getMessage());} catch (Exception e) { // शेष सभी अपवादों के लिए सामान्य हैंडलर    System.out.println("सामान्य त्रुटि: " + e.getMessage());}


finally ब्लॉक



finally ब्लॉक एक विशेष ब्लॉक है जो हमेशा निष्पादित होता है, चाहे अपवाद फेंका गया हो या नहीं। यह संसाधनों को मुक्त करने के लिए आदर्श है: फ़ाइलें बंद करना, डेटाबेस कनेक्शन या सॉकेट बंद करना।



import java.io.*;

public class FileExample { public static void main(String[] args) { FileInputStream file = null; try { file = new FileInputStream("test.txt"); int data = file.read(); System.out.println((char) data); } catch (FileNotFoundException e) { System.out.println("फ़ाइल नहीं मिली!"); } catch (IOException e) { System.out.println("इनपुट-आउटपुट त्रुटि!"); } finally { try { if (file != null) { file.close(); // फ़ाइल को किसी भी स्थिति में बंद करें } } catch (IOException e) { System.out.println("फ़ाइल बंद करने में त्रुटि!"); } } }}


भले ही try या catch ब्लॉक में कोई रिटर्न स्टेटमेंट हो, finally ब्लॉक फिर भी निष्पादित होगा। यह इसे संसाधन सफाई के लिए एक विश्वसनीय स्थान बनाता है।

ब्लॉग

पुस्तक अनुशंसाएँ