जावा में त्रुटि प्रबंधन: try/catch और उन्नत तकनीकें

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

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

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

परिचय: जावा में त्रुटि प्रबंधन एक कला क्यों है

\n

जावा में त्रुटि प्रबंधन केवल प्रोग्राम को क्रैश होने से रोकने का तंत्र नहीं है। यह एक विश्वसनीय, पठनीय और पूर्वानुमानित आर्किटेक्चर डिज़ाइन करने का उपकरण है। हर डेवलपर try/catch संरचना से परिचित है, लेकिन उन्नत स्तर पर बारीकियों को समझना महत्वपूर्ण है: जाँचे गए अपवादों का उपयोग कब करें, संसाधनों को सही तरीके से कैसे बंद करें, और multi-catch कोड दोहराव से कैसे बचा सकता है। इस लेख में, हम जावा में अपवादों के साथ काम करने की उन्नत तकनीकों पर चर्चा करेंगे जो आपको अधिक स्वच्छ और सुरक्षित कोड लिखने में मदद करेंगी।

\n\n

1. Multi-catch और अपवादों का संयोजन

\n

Java 7 से पहले, एक ही catch ब्लॉक में विभिन्न प्रकार के अपवादों को संभालना संभव नहीं था। या तो कोड को दोहराना पड़ता था या एक सामान्य पैरेंट क्लास (जैसे, Exception) का उपयोग करना पड़ता था, जिससे त्रुटि की जानकारी कम हो जाती थी। multi-catch के आगमन से स्थिति बदल गई।

\n

multi-catch का सिंटैक्स

\n

आप एक ही catch ब्लॉक में वर्टिकल बार (|) के माध्यम से कई प्रकार के अपवादों को सूचीबद्ध कर सकते हैं। यह तब उपयोगी होता है जब विभिन्न अपवादों के लिए प्रबंधन तर्क समान हो।

\n
try {\n    // कोड जो FileNotFoundException या IOException फेंक सकता है\n    FileReader reader = new FileReader("file.txt");\n    int data = reader.read();\n} catch (FileNotFoundException | IOException e) {\n    System.err.println("इनपुट-आउटपुट त्रुटि: " + e.getMessage());\n}
\n

महत्वपूर्ण: ऐसे ब्लॉक में वेरिएबल e final (या effectively final) होता है। इसका मतलब है कि इसे पुनः असाइन नहीं किया जा सकता, लेकिन सामान्य सुपरक्लास के तरीकों (जैसे, getMessage()) को कॉल किया जा सकता है।

\n

multi-catch का उपयोग कब करें?

\n
    \n
  • यदि अपवाद पदानुक्रम से संबंधित नहीं हैं (जैसे, IOException और SQLException)।
  • \n
  • यदि प्रबंधन तर्क पूरी तरह से समान है।
  • \n
  • यदि आप catch ब्लॉकों की पुनरावृत्ति से बचना चाहते हैं।
  • \n
\n\n

2. Try-with-resources: स्वचालित संसाधन प्रबंधन

\n

जावा में सबसे आम गलतियों में से एक है संसाधन (फ़ाइल, सॉकेट, DB कनेक्शन) को बंद करना भूल जाना। finally ब्लॉक में मैन्युअल रूप से बंद करने से कोड बोझिल हो जाता है और लीक का जोखिम रहता है। try-with-resources संरचना (Java 7+) इस समस्या का समाधान करती है।

\n

यह कैसे काम करता है

\n

संसाधन को AutoCloseable (या Closeable) इंटरफ़ेस को लागू करना चाहिए। try ब्लॉक के समाप्त होने (या अपवाद होने) पर संसाधन स्वचालित रूप से बंद हो जाएगा।

\n
try (FileReader reader = new FileReader("file.txt");\n     BufferedReader br = new BufferedReader(reader)) {\n    String line = br.readLine();\n    System.out.println(line);\n} catch (IOException e) {\n    System.err.println("त्रुटि: " + e.getMessage());\n}\n// reader और br स्वचालित रूप से बंद हो गए
\n

उन्नत सुविधाएँ

\n
    \n
  • एकाधिक संसाधन: उन्हें अर्धविराम के माध्यम से घोषित किया जा सकता है। बंद करना उल्टे क्रम में होता है।
  • \n
  • दबाए गए अपवाद: यदि संसाधन बंद करते समय कोई अपवाद फेंका जाता है और मुख्य अपवाद पहले ही फेंका जा चुका है, तो Java बंद करने के अपवाद को "दबा" देता है। इसे getSuppressed() विधि के माध्यम से प्राप्त किया जा सकता है।
  • \n
  • कस्टम संसाधनों के साथ उपयोग: AutoCloseable को लागू करने वाला कोई भी वर्ग try-with-resources में उपयोग किया जा सकता है।
  • \n
\n\n

3. कस्टम अपवाद बनाना और best practices

\n

जावा के अंतर्निहित अपवाद अक्सर व्यावसायिक तर्क के लिए पर्याप्त नहीं होते हैं। कस्टम अपवाद वर्ग बनाना एक मानक प्रथा है। हालाँकि, इसे सही ढंग से करना महत्वपूर्ण है।

\n

जाँचे गए बनाम बिना जाँचे गए अपवाद

\n

एक सरल नियम का पालन करें: यदि अपवाद को क्लाइंट द्वारा संभाला जा सकता है (जैसे, गलत इनपुट डेटा प्रारूप), तो इसे जाँचा गया (इनहे

ब्लॉग

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