एक स्थिर फैक्ट्री विधि किसी नई ऑब्जेक्ट को प्रारंभ करने में विफल होने पर मुझे कौन सा अपवाद फेंकना चाहिए? मैं null
लौटने के बजाय एक सार्थक अपवाद उठाना पसंद करता हूं।जावा: प्रारंभिक त्रुटि के लिए उपयुक्त अपवाद
उत्तर
यदि आप अपर्याप्त डेटा के कारण फैक्ट्री में अपवाद फेंक रहे हैं, तो मैं IllegalStateException
को "एक्स का निर्माण नहीं कर सकता, कोई वाई सेट नहीं किया जा सकता" जैसा वर्णन के साथ फेंकना चाहता हूं।
यदि आप विवादित डेटा के कारण फैक्ट्री में अपवाद फेंक रहे हैं, तो मैं IllegalStateException
को "एक्स के साथ एक्स, वाई संघर्षों का निर्माण नहीं कर सकता" जैसा वर्णन के साथ फेंकना चाहता हूं।
यदि आप खराब (या बकवास) मान के कारण फैक्ट्री में अपवाद फेंक रहे हैं, तो मैं IllegalArgumentException
को "वाई नहीं हो सकता" जैसा वर्णन के साथ फेंकना चाहता हूं।
यदि आप लापता मूल्य के कारण फैक्ट्री में अपवाद फेंक रहे हैं, तो मैं IllegalArgumentException
को "वाई नॉट नल" जैसा विवरण के साथ फेंकना चाहता हूं।
अंतिम प्राथमिकता कुछ बहस तक है। कुछ लोग सुझाव देते हैं कि NullPointerException
फेंकना बेहतर हो सकता है; मेरे मामले में, हम उन्हें हर कीमत से बचते हैं क्योंकि कई ग्राहक अपवाद संदेश नहीं पढ़ते हैं (और मान लें कि NullPointerException का मतलब कोडिंग त्रुटि है)।
किसी भी घटना में, आपको अपवाद को फेंकने के लिए एक अच्छा, विशिष्ट, संदेश प्रदान करना चाहिए, ताकि भविष्य में कुछ हद तक अपवाद को देखने के भविष्य की समर्थन लागत को कम किया जा सके।
आप अपवाद वर्ग का विस्तार
क्या इस मामले के लिए कोई अंतर्निहित अपवाद नहीं है? यह काफी आम परिदृश्य है। –
मैं शायद एक कन्स्ट्रक्टर को एक सामान्य परिदृश्य को फेंकने वाला कन्स्ट्रक्टर कहूंगा – Woot4Moo
बहुत सारे अपवाद हैं लेकिन अनुकूलित संदेश को प्रदर्शित करने की आवश्यकता होने पर यह स्वयं के लिए अधिक लचीला है –
कुछ इस तरह शायद सिर्फ होना चाहिए एक जोर से अपनी खुद की अपवाद बना सकते हैं, लेकिन अगर वहाँ वास्तव में तो यह है कि आप करने के लिए सार्थक है एक कस्टम अपवाद विफल इस के लिए संभावना होगा मेरी पसंद हो
आदर्श रूप से आप Exception
का विस्तार करना चाहते हैं और अपना खुद का IntializatonException
तैयार करना चाहते हैं।
हाँ, समस्या का कारण आपकी सबसे अच्छी शर्त है। यदि तर्क ठीक नहीं हैं, तो आप IllegalArgumentException को फेंक सकते हैं, अगर कुछ फ़ाइल नहीं है, तो आप FileNotFoundException को फेंक सकते हैं, अगर कारखाने को ठीक से शुरू नहीं किया गया है, तो आप IllegalStateException, आदि को फेंक सकते हैं ...
हालांकि, अपना खुद का अपवाद बनाना आसान है। बस आपको कक्षाके रूप में घोषित करें और प्रतिनिधि रचनाकार जोड़ें। यदि आप अपवाद बढ़ाते हैं, तो वह विधि जो इसे फेंक सकती है उसे throws
के साथ घोषित किया जाना चाहिए। यदि आप यह नहीं चाहते हैं, तो आप RuntimeException का विस्तार कर सकते हैं, जिन्हें घोषित नहीं किया जाना चाहिए।
- 1. एक पार्सिंग त्रुटि होने पर फेंकने के लिए उपयुक्त अपवाद?
- 2. जावा त्रुटि (कोई उपयुक्त ड्राइवर पाया)
- 3. जावा अपवाद त्रुटि - स्क्लाइट तैयारस्टेटमेंट.सेटब्लोब
- 4. सीएसएस उपयुक्त सामग्री के लिए उपयुक्त तरीका
- 5. परियोजना जावा लॉक बड़ी जावा परियोजनाओं के लिए उपयुक्त है?
- 6. शून्य सूचक अपवाद प्रारंभिक सेवा
- 7. जावा - सर्वश्रेष्ठ उपयुक्त डेटा संरचना
- 8. जैक्सन त्रुटि: कोई उपयुक्त कन्स्ट्रक्टर
- 9. स्थैतिक चर प्रारंभिक जावा
- 10. जावा सरणी प्रारंभिक गारंटी
- 11. जावा "वेब 2.0" अनुप्रयोगों के लिए उपयुक्त है?
- 12. Grails और Hibernate की आलसी प्रारंभिक अपवाद
- 13. मूल विधियों के लिए जावा कमांड अपवाद
- 14. हैशटेबल संपत्ति भंडारण के लिए उपयुक्त है?
- 15. जावा-एक्सएमएस प्रारंभिक आकार प्रभाव
- 16. जावा: ऑब्जेक्ट का प्रारंभिक अनुक्रम
- 17. जावा: अपवाद स्वयं शून्य है
- 18. जावा: अपवाद-फेंकने वाला वर्ग?
- 19. जावा इंस्टेंस प्रारंभिक ब्लॉक में अपवाद फेंकने की अनुमति क्यों नहीं है?
- 20. जावा ईई परियोजनाओं के लिए अपवाद हैंडलिंग आर्किटेक्चर
- 21. PHP रेडिस त्रुटि: अपवाद अपवाद 'RedisException'
- 22. रूबी डेटाटाइम mysql तुलना के लिए उपयुक्त
- 23. स्कैला के लिए उपयुक्त जीयूआई ढांचा?
- 24. Backbone.js मोबाइल उपकरणों के लिए उपयुक्त है?
- 25. समानांतर भाषाओं के लिए एलएलवीएम उपयुक्त है?
- 26. पायथन के स्ट्रक्चर मॉड्यूल के लिए उपयुक्त बफर क्या है
- 27. "अपवाद के लिए बहुत अधिक मूल्य" अपवाद
- 28. अपवाद इंफिनिलाइज़र त्रुटि?
- 29. क्या IllegalStateException एक अपरिवर्तनीय वस्तु के लिए उपयुक्त है?
- 30. सदस्य प्रारंभिक सूची त्रुटि में टेम्पलेट बेस कन्स्ट्रक्टर कॉल त्रुटि
यह इस बात पर निर्भर करेगा कि विफलता के कारण, यानी नेटवर्क समस्या, फ़ाइल पढ़ने में विफलता, आदि .. – Viruzzo
आपका मतलब है कि मुझे शुरुआत के दौरान जो भी अपवाद मिला है उसे फेंक देना चाहिए? –
जरूरी नहीं है, लेकिन आपके अपवाद को गलत कहने में सार्थक होना चाहिए, न केवल * कुछ * गलत हो गया। – Viruzzo