चेक किए गए अपवाद जावा में एक शक्तिशाली उपकरण हैं, क्योंकि वे प्रोग्रामर को असाधारण परिस्थितियों को संभालने के लिए मजबूर करते हैं, जिससे कोड विश्वसनीयता बढ़ती है। हालाँकि, अत्यधिक उपयोग से एपीआई का उपयोग करना मुश्किल हो सकता है। किसी चेक किए गए अपवाद को उचित ठहराने के लिए, स्थिति वास्तव में असाधारण होनी चाहिए और प्रोग्रामर द्वारा उपयोगी कार्रवाई करने में सक्षम होनी चाहिए। अन्यथा, एक अनियंत्रित अपवाद अधिक उपयुक्त हो सकता है।
जावा 8 चेक किए गए अपवादों के उपयोग के लिए एक अतिरिक्त चुनौती लेकर आया, क्योंकि उन्हें फेंकने वाली विधियों का सीधे स्ट्रीम में उपयोग नहीं किया जा सकता है, जिसके लिए कोड में अतिरिक्त हैंडलिंग की आवश्यकता होती है। इस जटिलता से बचने के लिए, विकल्पों पर विचार किया जा सकता है, जैसे सत्यापन योग्य अपवाद को फेंकने के बजाय एक वैकल्पिक ऑब्जेक्ट को वापस करना, या विधि को दो में विभाजित करना, एक जो त्रुटि की संभावना की जांच करता है और दूसरा जो ऑपरेशन करता है।
चेक किए गए अपवादों का उपयोग कम से कम किया जाना चाहिए: यदि पुनर्प्राप्ति संभव नहीं है, तो अनियंत्रित अपवादों का उपयोग करें। जब पुनर्प्राप्ति संभव हो, तो वापसी के लिए वैकल्पिक पर विचार करें। यदि यह पर्याप्त जानकारी प्रदान नहीं करता है, तो एक चेक किए गए अपवाद को उचित ठहराया जा सकता है।
प्लस:
चेक किए गए अपवादों और वैकल्पिक जैसे वैकल्पिक और चेक विधियों के उपयोग के उचित उपयोग को दर्शाने के लिए यहां कुछ उदाहरण दिए गए हैं।
चेक किए गए अपवादों का संयम से उपयोग करना
मान लीजिए कि हमारे पास एक विधि है जो किसी फ़ाइल से डेटा लोड करती है। यदि फ़ाइल नहीं मिलती है, तो हम कॉल करने वाले को समस्या के बारे में सूचित करने के लिए एक अपवाद फेंकना चाहते हैं। इस मामले में, एक चेक किया गया अपवाद उपयुक्त है क्योंकि डेवलपर समस्या को हल करने के लिए कार्रवाई कर सकता है (जैसे कि सही संग्रह पथ प्रदान करना)।
public class FileLoader { public String loadFile(String filePath) throws FileNotFoundException { File file = new File(filePath); if (!file.exists()) { throw new FileNotFoundException("Arquivo não encontrado: " filePath); } // Código para carregar o arquivo return "Conteúdo do arquivo"; } }
यहां, कॉल करने वाले को FileNotFoundException अपवाद को संभालने की आवश्यकता है, क्योंकि वह फ़ाइल को सही पथ प्रदान करके समस्या को ठीक कर सकता है।
चेक किए गए अपवादों के बजाय वैकल्पिक का उपयोग करना
यदि गुम फ़ाइल एक ऐसी स्थिति है जिससे सामान्य निष्पादन बाधित नहीं होना चाहिए, तो हम यह इंगित करने के लिए वैकल्पिक का उपयोग कर सकते हैं कि परिणाम अपवाद फेंके बिना गायब हो सकता है। यह उन मामलों के लिए एपीआई को अधिक तरल बनाता है जहां मूल्य की अनुपस्थिति को सहन किया जा सकता है।
import java.util.Optional; public class FileLoader { public OptionalloadFile(String filePath) { File file = new File(filePath); if (!file.exists()) { return Optional.empty(); } // Código para carregar o arquivo return Optional.of("Conteúdo do arquivo"); } }
कॉलर कोड में:
FileLoader loader = new FileLoader(); Optionalcontent = loader.loadFile("caminho/para/arquivo.txt"); content.ifPresentOrElse( System.out::println, () -> System.out.println("Arquivo não encontrado.") );
इस उदाहरण में, कॉल करने वाले को अपवादों को संभालने की आवश्यकता नहीं है, और वैकल्पिक उसे लापता सामग्री को अधिक आसानी से संभालने की अनुमति देता है।
विधि को दो भागों में विभाजित करना: सत्यापन और कार्रवाई
कुछ मामलों में, हम विधि को दो भागों में विभाजित कर सकते हैं: एक जो स्थिति की जाँच करती है और दूसरा जो कार्रवाई करती है। यह कॉल करने वाले को मुख्य विधि को कॉल करने से पहले असाधारण स्थिति को संभालने की अनुमति देता है, जिससे एपीआई अधिक लचीला हो जाता है।
public class FileLoader { // Verifica se o arquivo está disponível public boolean isFileAvailable(String filePath) { File file = new File(filePath); return file.exists(); } // Carrega o conteúdo do arquivo public String loadFile(String filePath) { if (!isFileAvailable(filePath)) { throw new IllegalStateException("Arquivo não encontrado: " filePath); } // Código para carregar o arquivo return "Conteúdo do arquivo"; } }
कॉलर कोड में:
FileLoader loader = new FileLoader(); String filePath = "caminho/para/arquivo.txt"; if (loader.isFileAvailable(filePath)) { String content = loader.loadFile(filePath); System.out.println(content); } else { System.out.println("Arquivo não encontrado."); }
यहां हम IllegalStateException का उपयोग करते हैं, एक अनियंत्रित अपवाद, उस स्थिति में जहां कॉल करने वाला पहले यह जांचे बिना फ़ाइल लोड करने का प्रयास करता है कि यह उपलब्ध है या नहीं।
सारांश
चेक किया गया अपवाद: उन स्थितियों के लिए उपयोग करें जिन्हें कॉल करने वाला सीधे ठीक कर सकता है, जैसे फ़ाइलों के लिए FileNotFoundException।
वैकल्पिक: तब उपयोग करें जब किसी मान की अनुपस्थिति से प्रोग्राम प्रवाह बाधित न हो।
विधि प्रभाग: जब त्रुटि की भविष्यवाणी की जा सकती है और उससे बचा जा सकता है, तो जांच और निष्पादन के तरीकों को अलग करें, जिससे एपीआई अधिक लचीला और उपयोग में आसान हो जाए।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3