Wrapping a checked exception into an unchecked exception in Java? -


मेरे पास जावा में यह फ़ैक्टरी विधि है:

  सार्वजनिक स्थिर गुण प्राप्त करेंकॉन्फिफैक्टर () ClassNotFoundException फेंकता है , आईओई एक्सप्शन {if (config == null) {InputStream in = Class.forName (PACKAGE_NAME) .getResourceAsStream (CONFIG_PROP); Config = नया गुण (); config.load (में); } वापसी कॉन्फ़िग; }  

और मैं अनचाहे अपवादों में दो जाँच अपवादों को बदलना चाहता हूं। इस बारे में जाने का सबसे अच्छा तरीका क्या है?

क्या मुझे अपवाद को पकड़ना चाहिए और आंतरिक अपवाद के रूप में पकड़े हुए अपवाद का उपयोग करके एक नया रनटाइम एक्सपैशन फेंकना चाहिए?

क्या कोई बेहतर तरीका है ऐसा करना या क्या मैं भी पहली जगह में ऐसा करने का प्रयास करूँ?

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

मेरा उद्देश्य एक अनावश्यक फेंकता अपवाद , मेरे कारखाने को कॉल करने वाली प्रत्येक विधि के हस्ताक्षर में अपवाद जोड़ा गया।

रनटाइम अपवाद का उपयोग तब किया जाना चाहिए जब क्लाइंट समस्या से जो कुछ भी ठीक नहीं हो सकता है

यदि आप जेडीके> = 1.4 का उपयोग कर रहे हैं, तो आप ऐसा कुछ कर सकते हैं:

 कोशिश {// कोड जो एक अपवाद फेंक सकता है} पकड़ (IOException ई) {नए रनटाइम अपवाद (ई); } पकड़ (क्लासनोटफौन्डएक्सेशन ई) {नया रनटाइम एक्सपैशन (ई); }  

और rethrown रनटाइम अपवाद मूल कारण इसमें शामिल होगा। इस तरह, रनटाइम एक्सपॉशन को पकड़ने वाले धागे के शीर्ष पर कोई भी आपका धागा रनटाइम एक्सपॉशन पकड़ लेता है, इसलिए वे चुपचाप मरते ही नहीं, है ना? - कम से कम कारण के पूर्ण स्टैक ट्रेस को प्रिंट कर सकते हैं।

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

नोट: सिर्फ रनटाइम एक्सपॉशन की तुलना में बेहतर होगा विशिष्ट अनचेक अपवाद अगर एक उपलब्ध है। उदाहरण के लिए, यदि आपकी विधि एक ClassNotFoundException फेंक सकती है, तो इसका एकमात्र कारण है क्योंकि एक कॉन्फ़िगरेशन फ़ाइल अनुपलब्ध है, आप एक MissingResourceException पुनर्स्थापित कर सकते हैं, जो एक अनचेक अपवाद है लेकिन अधिक जानकारी देता है आप इसे क्यों फेंक रहे हैं इसके बारे में अन्य अच्छे रनटाइम अपवाद s का उपयोग करने के लिए यदि वे समस्या का वर्णन करते हैं जो आप reinstalling कर रहे हैं IllegalStateException , TypeNotPresentException और UnsupportedOperationException । < / P>

यह भी ध्यान रखें कि आपके धागे को रनटाइम अपवाद पकड़ने के लिए हमेशा एक अच्छा विचार है और कम से कम लॉग इन करें कम से कम इस तरह से आप समझते हैं कि आपके सूत्र क्यों दूर जा रहे हैं।


Comments