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

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

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

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

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



अपवाद प्रबंधन एक विश्वसनीय Java-एप्लिकेशन की आधारशिलाओं में से एक है। अधिकांश डेवलपर्स बुनियादी try-catch-finally संरचना से परिचित हैं, लेकिन उन्नत स्तर पर Java अधिक लचीले और कुशल उपकरण प्रदान करता है। इस लेख में, हम न केवल क्लासिक दृष्टिकोण को कवर करेंगे, बल्कि आधुनिक क्षमताओं जैसे multi-catch, try-with-resources, कस्टम अपवाद बनाना और उन्हें संभालने की रणनीतियों पर भी चर्चा करेंगे। यह सामग्री उन डेवलपर्स के लिए है जो पहले से ही Java में आत्मविश्वास से कोड लिखते हैं और अपने ज्ञान को गहरा करना चाहते हैं।



1. क्लासिक: try-catch-finally और इसकी बारीकियाँ



बुनियादी संरचना आधार बनी हुई है। हालांकि, उन्नत स्तर पर यह समझना महत्वपूर्ण है कि यह अंदरूनी तौर पर कैसे काम करता है और अनुभवी प्रोग्रामर भी कौन सी गलतियाँ करते हैं।



फ़ाइल इनपुट-आउटपुट के साथ एक उदाहरण देखें:



import java.io.*;

public class ClassicExample { public static void main(String[] args) { BufferedReader reader = null; try { reader = new BufferedReader(new FileReader("file.txt")); String line = reader.readLine(); System.out.println(line); } catch (IOException e) { System.err.println("पढ़ने में त्रुटि: " + e.getMessage()); } finally { try { if (reader != null) { reader.close(); } } catch (IOException e) { System.err.println("बंद करने में त्रुटि: " + e.getMessage()); } } }}


उन्नत स्तर के लिए मुख्य बिंदु:

  • catch ब्लॉक का क्रम: अधिक विशिष्ट अपवाद पहले आने चाहिए। यदि आप IOException से पहले Exception रखते हैं, तो कंपाइलर एक त्रुटि देगा।
  • finally ब्लॉक हमेशा निष्पादित होता है, भले ही try या catch में return हो। यह संसाधनों को मुक्त करने के लिए महत्वपूर्ण है।
  • अपवादों का दमन: यदि try और finally दोनों में अपवाद उत्पन्न होता है, तो finally का अपवाद पहले वाले को "निगल" लेता है। इससे बचने के लिए Throwable.getSuppressed() का उपयोग करें।


2. Multi-catch: सुंदरता और पठनीयता



Java 7 से शुरू होकर, एक ही catch ब्लॉक में कई अपवादों को संयोजित करने की सुविधा आई। यह कोड दोहराव को काफी कम करता है।



Multi-catch के बिना कोड बोझिल दिखता है:



try {    // कोड जो IOException या SQLException फेंक सकता है} catch (IOException e) {    logger.error("इनपुट-आउटपुट त्रुटि", e);    throw new RuntimeException(e);} catch (SQLException e) {    logger.error("डेटाबेस त्रुटि", e);    throw new RuntimeException(e);}


Multi-catch के साथ यह संक्षिप्त हो जाता है:



try {    // कोड} catch (IOException | SQLException e) {    logger.error("संसाधनों के साथ काम करने में त्रुटि", e);    throw new RuntimeException(e);}


महत्वपूर्ण: multi-catch में वेरिएबल e final (या effectively final) है। आप इसे कोई अन्य मान निर्दिष्ट नहीं कर सकते। यह प्रकार सुरक्षा के लिए किया गया है।



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



यह संसाधनों को संभालने के लिए शायद सबसे शक्तिशाली सुधार है। यह AutoCloseable (या Closeable) इंटरफ़ेस को लागू करने वाले संसाधनों को स्वचालित रूप से बंद कर देता है।



ऊपर दिए गए क्लासिक उदाहरण से तुलना करें। try-with-resources के साथ यह इस प्रकार दिखता है:



import java.io.*;

public class TryWithResourcesExample { public static void main(String[] args) { try (BufferedReader reader = new BufferedReader(new FileReader("file.txt")); BufferedWriter writer = new BufferedWriter(new FileWriter("output.txt"))) {

Strin

ब्लॉग

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