14

मैं टिप्पणियों के साथ अपने सी # कोड को सजाने वाला हूं इसलिए मैं HTML सहायता फ़ाइलों का उत्पादन कर सकता हूं।दस्तावेज इंटरफेस और उनके कार्यान्वयन

मैं अक्सर इंटरफेस घोषित करता हूं और दस्तावेज करता हूं। लेकिन उन इंटरफेस को लागू करने वाले वर्ग कार्यान्वयन के आधार पर विशिष्ट अपवाद फेंक सकते हैं।

कभी-कभी, क्लाइंट केवल उन इंटरफेस के बारे में जानता है जो वह उपयोग कर रहे हैं। क्या मुझे अपने अपवादों को संभावित अपवाद जोड़कर दस्तावेज करना चाहिए जो इसके कार्यान्वयनकर्ताओं द्वारा फेंक दिया जा सकता है?

क्या मुझे कस्टम अपवाद बनाना/दस्तावेज करना चाहिए ताकि कार्यान्वयनकर्ता इन ढांचे के बजाय इन्हें फेंक दें?

मुझे उम्मीद है कि यह स्पष्ट है!

धन्यवाद

संपादित जनवरी 4 थी 2010: मैं http://blog.mikecouturier.com/2010/01/creating-custom-exceptions-in-net-right.html

+0

का उपयोग करने के लिए उपयोगी दिशानिर्देशों के रूप में कार्य कर सकता है तो आप अपने प्रश्न – Jodrell

उत्तर

14

पर इस और .NET में कस्टम अपवाद के बारे में एक ब्लॉग पोस्ट लिखने के लिए मुझे यकीन है कि मैं पूरी तरह से अपने प्रश्न समझ में आ नहीं कर रहा हूँ का फैसला किया है (और मैं एक हूँ जावा, सी # डेवलपर नहीं), लेकिन ऐसा लगता है कि आप अनिवार्य रूप से बहुरूपता का मुद्दा क्या पूछ रहे हैं: यदि कोई एक्स और वाई फेंकने के लिए घोषित एक इंटरफेस पर एक विधि का उपयोग करता है, तो क्या होता है यदि कार्यान्वयन ज़ेड फेंकता है?

पालन करने की एक बात अनुरूपता का सिद्धांत है, जो अनिवार्य रूप से कहती है कि एक उप प्रकार को सुपरटेप के व्यवहार के अनुरूप होना चाहिए। यही है, यदि आप दस्तावेज़ीकरण कर रहे हैं कि इंटरफ़ेस में आपकी विधि केवल एक प्रकार के अपवाद (उदा।, शून्य सूचक अपवाद) को फेंक सकती है, तो कॉलर्स के साथ आपका अनुबंध यह है कि यह एकमात्र चीज है जिसे उन्हें देखना चाहिए। यदि आप कुछ और फेंक देते हैं, तो आप उन्हें आश्चर्यचकित कर सकते हैं।

सुपरटेप में एक विशिष्ट उप प्रकार के बारे में चीजों को दस्तावेज करना एक अच्छा विचार नहीं है क्योंकि यह अनावश्यक युग्मन बनाता है। मैं इस तथ्य के बारे में अधिक चिंतित हूं कि एक कार्यान्वयन घोषणा से भिन्न तरीके से व्यवहार कर सकता है क्योंकि इससे पता चलता है कि घोषणा पर्याप्त नहीं है।

यह सोचने का प्रयास करें कि आपके तरीके फेंकने वाले सभी प्रकार के अपवाद क्या हैं। उनके लिए सुपरटेप बनाएं, और फिर स्पष्ट रूप से अपनी इंटरफ़ेस विधि में घोषित करें (उदा।, यह विधि कुछ "गणना अपवाद" फेंक सकती है)। फिर, अपने कार्यान्वयन में, अधिक विवरण के साथ एक गणना अपवाद फेंक दें, या कार्यान्वयन के लिए विशिष्ट गणना अपवाद के कुछ उप प्रकार को फेंक दें, आप अभी भी अनुरूप होंगे।

+0

अच्छे उत्तर का उत्तर दे सकते हैं। बस मैं क्या कहने जा रहा था। –

+0

ग्रेट आपने इसे खींचा। मैं कस्टम अपवाद बनाएगा ताकि उपप्रकार उन्हें फेंक देंगे।मैं चीजों को सामान्य रूप से पर्याप्त बना दूंगा ताकि अगर उपप्रकार एक्सएमएल में या जेएसओएन (कार्यान्वयन के आधार पर) में कोई प्रतिक्रिया नहीं पढ़ सके, तो वे उदाहरण के लिए एक पारसी अपवाद फेंकने में सक्षम होंगे (और पूर्व के लिए XmlException नहीं)। धन्यवाद! –

6

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

उन्हें बनाने मत करो बेकार में हालांकि, एक मौजूदा .Net Framework अपवाद है कि आपके त्रुटि स्थिति उपयोग कि

कार्यान्वयन आप टिप्पणी की टिप्पणी अनुभाग का उपयोग कर सकते के लिए दस्तावेजीकरण के संदर्भ में (आप यह सोचते हैं 'का वर्णन करता है या नहीं एक्सएमएल टिप्पणियों का उपयोग कर) चीजों का वर्णन करने के लिए जैसे कि आप कार्यान्वयनकर्ताओं को चीजों को करने की अपेक्षा करेंगे। जाहिर है, यह किसी भी तरह से लागू करने योग्य नहीं है लेकिन जब डेवलपर आपके एपीआई

+0

हां मैं एक टिप्पणी अनुभाग में कार्यान्वयनकर्ताओं को जो कुछ भी देखना चाहिए उसे कवर करने का प्रयास करता हूं! आप जितना संभव हो सके मौजूदा अपवादों का उपयोग करने की कोशिश करने पर भी सही हैं। आपकी मदद के लिए धन्यवाद –

+0

विवरण के विवरण के लिए भी +1 –

+3

मैं रोब से सहमत हूं। मैं यह भी कहूंगा कि मेरे अनुभव में, बहुत से अपवाद उपप्रकार वास्तव में बहुत अधिक नहीं जोड़ते हैं। अधिकांश लोग एक अपवाद ऑब्जेक्ट पसंद करेंगे जो अधिक सार्थक राज्य डेटा के साथ प्रारंभ किया गया है, यहां तक ​​कि एक बेहतर त्रुटि संदेश भी। यदि मैं स्पष्ट करना चाहता हूं तो मैं टाइप किए गए अपवादों का उपयोग करता हूं, मैं उम्मीद करता हूं कि किसी को कुछ त्रुटियों से ठीक होने की उम्मीद है। – Uri

संबंधित मुद्दे