जावा में custome अपवाद को परिभाषित करने के लिए कोई बड़ा कारण?कस्टम अपवाद को परिभाषित करने के क्या फायदे हैं?
उत्तर
दो कारण तुरंत दिमाग में वसंत:
- सीधे शब्दों में तो तुम
try { ... } catch (Exception e) { ... }
नहीं कहता - अपनी खुद की उपवर्गों होने आप अलग अपवाद मामलों में अलग से इलाज की सुविधा देता है। (जैसे एक रिपोर्ट चलाने की अनुमति नहीं है, और रिपोर्ट निष्पादन विफल होने के बीच अंतर)। - आप अतिरिक्त संदर्भ जोड़ सकते हैं - उदाहरण के लिए यदि आपके पास अपना
AlreadyLoggedInException
है, तो कहें कि उस अपवाद में आईपी पता पुनर्प्राप्त करने का एक तरीका हो सकता है जिससे अन्य सत्र शुरू किया गया था। याAccountLimitExceededException
में वर्तमान खाता सीमा हो सकती है। अपवाद में अतिरिक्त जानकारी आपको पकड़ने पर संभावित रूप से अधिक अच्छी तरह से सूचित प्रतिक्रिया लेने की अनुमति देती है।
त्रुटि-विशिष्ट जानकारी प्रदान करना, अधिक बढ़िया अपवाद हैंडलर को अनुमति देना।
हां। बड़ा फायदा यह है कि यह आपको फेंकने और अपवादों की अनुमति देता है जिसका मतलब है कि आप चाहते हैं कि उनका मतलब हो। यदि आप किसी मौजूदा अपवाद का पुन: उपयोग करते हैं, तो अपवाद को पकड़ने वाले आपके कोड का कोई भी टुकड़ा इस संभावना से निपटने के लिए है कि वास्तविक अपवाद आपके कोड द्वारा नहीं फेंक दिया गया था, लेकिन कुछ अन्य लाइब्रेरी पार्टी कोड द्वारा। इससे अधिक फ्लेकी को संभालने में त्रुटि होती है।
कस्टम अपवाद के साथ, आप अपने कॉलर्स को बता सकते हैं कि एक त्रुटि की बजाय एक विशिष्ट प्रकार की त्रुटि हुई है। और कॉलर इस प्रकार की त्रुटि के लिए विशिष्ट कुछ भी नहीं कर सकते हैं।
चलिए एक कार समानता का उपयोग करते हैं: क्या आप अपनी कार को एक अद्वितीय लाल रोशनी झपकी से शुरू करने से मना कर सकते हैं, या एक समर्पित "गैस टैंक खाली" प्रकाश झपकी के साथ?
मुझे पता है कि आप क्या कहने की कोशिश कर रहे हैं, लेकिन संदेशों के बारे में बात करना एक अच्छा सादृश्य नहीं है। अगर यह सिर्फ संदेश था, तो हम सभी नए अपवाद को फेंक सकते थे ("मैं शुरू नहीं करूँगा क्योंकि मैं गैस से बाहर हूं") –
आप सही हैं। हमेशा के रूप में, एक कार समानता एक बहुत अच्छा समानता नहीं है। संदेशों के बारे में बात करने से बचने के लिए मैं अपनी पोस्ट संपादित करूंगा। –
काफी सरलता से, यह आपको सही तरीके से प्रत्येक अपवाद से निपटने की अनुमति देता है।
निम्नलिखित कोड पर विचार करें
try {
doSomethingThatCouldThrowManyExceptions();
}
catch (ExceptionalCircumstance1 ex) {
// deal with this specific circumstance
}
catch (ExceptionalCircumstance2 ex) {
// deal with this specific circumstance
}
catch (ExceptionalCircumstance3 ex) {
// deal with this specific circumstance
}
finally {
// do some common code
}
इस के बिना, आप एक कैच-ऑल अपवाद के प्रकार करने का प्रयास कर रह जायेंगे।
यदि हालांकि कैच-सब कुछ करेंगे, तो कक्षा पदानुक्रम का अभी भी मतलब है कि आप अभी भी catch(Exception ex) {}
का उपयोग करके सभी अपवादों को पकड़ सकते हैं।
मेरे विचार में कस्टम अपवादों के लिए मुख्य प्रेरणा आपके एप्लिकेशन डोमेन की एक बेहतर मॉडलिंग प्राप्त करना है। कक्षाओं को डिजाइन करते समय आप वस्तुओं का नाम देने और उनकी जिम्मेदारियों को सौंपने के लिए काफी प्रयास करते हैं। मुझे लगता है कि इस बिंदु पर संभावित त्रुटि स्थितियों पर विचार करने के लिए कुछ प्रयास एक अच्छा निवेश है। उदाहरण के लिए, गहराई से खोदने पर, ग्राहक अक्सर आपको कुछ सामान्य उदाहरण दे सकते हैं जिन्हें संभालना है (उदा। अमान्य डेटा, तार्किक बाधाओं का उल्लंघन, अविश्वसनीय सेंसर इत्यादि)। नतीजतन आपके पास कोड होगा जो समझना और संशोधित करना आसान है। एप्लिकेशन विशिष्ट त्रुटियों को अच्छी तरह से अलग किया जाता है और अतिरिक्त त्रुटियों के संचालन को आसानी से हासिल किया जा सकता है।
एक और बिंदु यह है कि यह सिस्टम के विभिन्न हिस्सों के लिए बेहतर अमूर्तता प्रदान कर सकता है। उदाहरण के लिए, यदि आप वास्तव में उम्मीद करते हैं कि भविष्य में दृढ़ता भाग का कार्यान्वयन बदल जाएगा, तो इसके एपीआई में कस्टम अपवादों का उपयोग करना बेहतर होगा।अन्यथा आपको बाद में कई अलग-अलग स्थानों में एसक्यूलेक्सप्शन या SAXExceptions से निपटने में बहुत मज़ा आएगा :-)
- 1. विदेशी कुंजी को परिभाषित करने के क्या फायदे हैं
- 2. ASP.NET में कस्टम सदस्यता प्रदाता के क्या फायदे हैं?
- 3. संपत्तियों को गैर-गणना करने के क्या फायदे हैं?
- 4. जावा में कतार को अवरुद्ध करने के क्या फायदे हैं?
- 5. जेरेबेल के क्या फायदे हैं?
- 6. लेट्रेक के क्या फायदे हैं?
- 7. पर्सफोर्स के फायदे क्या हैं?
- 8. QStandardItemModel पर QAbstractItemModel के क्या फायदे हैं?
- 9. automapper का उपयोग करने के क्या फायदे हैं?
- 10. जावास्क्रिप्ट सरणी को निष्क्रिय करने के लिए स्ट्रिंग को विभाजित करने के क्या फायदे हैं?
- 11. PHP को ASP.NET पर क्या फायदे हैं?
- 12. रेल में एक मॉड्यूल में कस्टम अपवाद को परिभाषित करना
- 13. मेवेन का उपयोग करने के फायदे/नुकसान क्या हैं?
- 14. वीबीए में कक्षाओं का उपयोग करने के क्या फायदे हैं?
- 15. सीवीएस पर एसवीएन का उपयोग करने के क्या फायदे हैं?
- 16. प्लग-इन आधारित आर्किटेक्चर के फायदे और नुकसान क्या हैं?
- 17. वैकल्पिक दृश्य इंजन का उपयोग करने के क्या फायदे हैं?
- 18. विंडोज सर्टिफिकेट स्टोर के क्या फायदे हैं?
- 19. दृढ़ता अज्ञानता के क्या फायदे हैं?
- 20. कॉन्वर्सिस और contravariance के क्या फायदे हैं?
- 21. निष्पादक सेवा का उपयोग करने के क्या फायदे हैं?
- 22. त्रुटि का उपयोग करने के क्या फायदे हैं?
- 23. डब्ल्यूसीएफ का उपयोग करने के क्या फायदे हैं?
- 24. एआरसी का उपयोग करने के फायदे और नुकसान क्या हैं?
- 25. स्वीकृति परीक्षण स्वचालित करने के क्या फायदे हैं?
- 26. ओपनआईडी का उपयोग करने के फायदे और नुकसान क्या हैं?
- 27. डेटाबेस में देखने का उपयोग करने के क्या फायदे हैं?
- 28. संसाधन (.resx) फ़ाइलों के क्या फायदे हैं?
- 29. करी के व्यावहारिक फायदे क्या हैं?
- 30. आलसी मूल्यांकन के क्या फायदे हैं?
क्या आप कृपया इसके बजाय एक कामकाजी उदाहरण दे सकते हैं ताकि यह मेरे लिए स्पष्ट हो जाए? – Deepak