जब किसी कन्स्ट्रक्टर में विधियों को अपवादित किया जाता है, तो कन्स्ट्रक्टर को संभाल नहीं सकता है, तो उन्हें पकड़ना ठीक है और रनटाइम अपवाद के रूप में उन्हें वापस फेंकना ठीक है यदि आपका यकीन है कि एप्लिकेशन इसे संभाल नहीं सकता है और बिना बेकार होगा वस्तु का निर्माण किया जा रहा है?क्या रचनाकारों के लिए रनटाइम अपवाद फेंकना ठीक है?
उत्तर
हां, यह कई रचनाकारों में वैसे भी अपरिहार्य है जब वे अन्य विधियों को कॉल करते हैं क्योंकि हमेशा संभावना है कि वे पहले से ही अनचेक अपवाद फेंक देंगे।
के लिए अच्छा सवाल यह एक अच्छा मुद्दा है। – insipid
हां यह आपके कन्स्ट्रक्टर में अपवाद फेंकने के लिए पूरी तरह से मान्य है। ऐसा करने के लिए आपके पास बहुत कम या कोई अन्य विकल्प नहीं है, खासकर जब आप किसी ऑब्जेक्ट को बनाने की कोशिश कर रहे हैं और चीजें सिर्फ सही पर काम न करें।
हां। जब तक आप यह नहीं जानते कि अपवाद को कैसे संभाला जाना चाहिए, तो आप इसे निगलने और एक स्टैक ट्रेस (या बदतर, पूरी तरह से कुछ भी नहीं) प्रिंट करने के बजाय इसे फेंकने से बेहतर हैं।
इससे बाद में कुछ बेहद मुश्किल-से-डीबग त्रुटियों को रोकने में मदद मिलेगी।
हां। यह मानक अभ्यास है।
Effective Java, 2nd Ed. में यह आइटम 61 द्वारा कवर किया गया है, "अमूर्तता के लिए उपयुक्त अपवाद फेंको"। चाहे परिणामी अपवाद चेक किया गया हो या अनचेक किया गया हो, आइटम 58 में प्रभावी जावा द्वारा भी कवर किया गया है, "प्रोग्रामिंग त्रुटियों के लिए पुनर्प्राप्ति योग्य स्थितियों और रनटाइम अपवादों के लिए चेक अपवादों का उपयोग करें"।
कि यह एक सामान्य विधि के बजाय एक निर्माता है वास्तव में एक मुद्दा नहीं है। (वास्तव में, रचनाकारों के पास तर्कसंगत रूप से अधिक स्वतंत्रता है क्योंकि वे सुपर के इंटरफ़ेस से बंधे नहीं हैं।)
किसी अन्य अपवाद के परिणामस्वरूप अपवाद फेंकते समय यह सुनिश्चित करना एक अच्छा विचार है कि आप नए पर cause
सेट कर रहे हैं अपवाद।
को चेक अप करने के लिए बिल्कुल ठीक है, यह इंगित करने के लिए कि ऑब्जेक्ट का निर्माण विफल रहा है, क्योंकि क्रिस जेस्टर-यंग ने पहले ही टिप्पणी की थी। चाहे अनचेक अपवाद फेंकना एक अच्छा विचार है, अपवाद एक और मुद्दा है। आप संकलक के घबराहट को खो देंगे जो आपको अपवाद को पकड़ने और संभालने का आग्रह करता है, जिसे आप निश्चित रूप से करना चाहते हैं।
आप क्यों चाहते हैं? अधिकतर बार आप इसे संभालना नहीं चाहते हैं, इसकी एक त्रुटि है, इसे लॉगर/जॉब हैंडलर पर स्टैक को चलाने दें। – reto
व्यक्तिगत रूप से मुझे रचनाकारों को चेक अपवादों को फेंकने से नफरत है (जैसा कि डोप्पेल्डिश पहले से ही इंगित किया गया है)। फिर भी, आप कैसे सुनिश्चित कर सकते हैं कि एप्लिकेशन अपवाद को संभाल नहीं सकता है? यहां तक कि यदि एप्लिकेशन इसे संभाल नहीं सकता है, तो शायद उपयोगकर्ता फिर कोशिश कर सकता है?
कुछ विचार करने के लिए +1: पी धन्यवाद – insipid
- 1. क्या यह java.lang.Error फेंकना ठीक है?
- 2. आभासी तरीकों में NotImplemented अपवाद फेंकना ठीक है?
- 3. नया अपवाद क्या है या फेंकना है?
- 4. सी ++ अपवाद फेंकते समय क्या फेंकना है?
- 5. ServletException को Servlet से फेंकना ठीक है?
- 6. अजीब अपवाद शब्दावली "फेंकना"
- 7. क्या यह रेगेक्स पैटर्न अपवाद फेंकना चाहिए?
- 8. क्या यह मेरी सेवा से किसी ग्राहक को अपवाद वापस फेंकना ठीक है?
- 9. BluetoothSocket.connect() फेंकना अपवाद "पढ़ा विफल"
- 10. क्या रचनाकारों को डेटा रीडर पास करना ठीक है?
- 11. java.util.Prefs बैकिंगस्टोर अपवाद फेंकना - क्यों?
- 12. त्रुटि कोड लौटने के बजाय अपवाद फेंकना बेहतर क्यों है?
- 13. एसटीएल को दावे के बजाय अपवाद कैसे फेंकना है?
- 14. अनचेक अपवाद या रनटाइम अपवाद
- 15. एसक्यूएल सीएलआर संग्रहीत प्रक्रियाओं में अपवाद फेंकना
- 16. अपवाद फेंकना और उपयोगकर्ता को सूचित करना
- 17. मुझे किस प्रकार का अपवाद फेंकना चाहिए?
- 18. मेरे कोड में एक समेकित अपवाद फेंकना
- 19. सी ++: अपवाद फेंकना, 'नया' या नहीं?
- 20. क्या स्टैक के शीर्ष पर अपवाद बुलबुला करना ठीक है?
- 21. टाइमर में नल पॉइंटर अपवाद फेंकना। शेड्यूल();
- 22. सर्वोत्तम प्रथाओं: गुणों से अपवाद फेंकना
- 23. क्या एक व्यापार नियम उल्लंघन एक अपवाद फेंकना चाहिए?
- 24. रनटाइम अपवाद: वर्ग खंड
- 25. फ़ंक्शन को कॉल करते समय "अपवाद फेंकना" क्यों आवश्यक है?
- 26. क्या इसे फेंकने के बिना अपवाद को तुरंत ठीक करना ठीक है?
- 27. एक इनलाइन-एएसएम कूद के बाद एक सी ++ अपवाद फेंकना
- 28. सी ++ रनटाइम, प्रदर्शन अपवाद संदेश
- 29. रनटाइम अपवाद का उचित उपयोग?
- 30. क्या यह एक कारखाने विधि के लिए ठीक है वापस करने के लिए ठीक है?
हां, कन्स्ट्रक्टर से अपवाद फेंकना एक वस्तु के निर्माण को रद्द करने का मानक तरीका है। –
+1 - नए कॉमर्स के लिए ओओपी – JonH