मैं त्रुटि की प्रकृति को संवाद करने के लिए कस्टम अपवादों का उपयोग करता हूं।
उदाहरण के लिए, मुझे तर्कों की जांच करने के लिए "ArgumentNullException" प्रदान किए गए ढांचे का उपयोग करना पसंद है। फिर बाद में, जब मैं डीबगर में या त्रुटि लॉग में यह त्रुटि देखता हूं, तो मुझे तुरंत बिना पढ़ने के त्रुटि की प्रकृति पता है।
स्पेक्ट्रम का दूसरा छोर अमान्यऑपरेशन अपवाद है जिसका अर्थ बहुत कुछ हो सकता है।
कस्टम अपवादों का विकल्प विस्तृत त्रुटि संदेश है। यह ठीक है, लेकिन कस्टम अपवाद बनाकर जैसे कनेक्शन कनेक्शन अधिक अर्थपूर्ण है। फिर संदेश स्वयं अधिक जानकारी दे सकता है।
ऐसे कस्टम अपवाद बनाते समय, मैं कोई नई संपत्ति नहीं जोड़ता हूं। इसका कारण यह है कि यदि आपके पास त्रुटि लॉगजर है, तो आप इसे सभी अपवादों पर काम करना चाहते हैं। यदि आप एक विशेष संपत्ति जोड़ते हैं, तो त्रुटि लॉगर इसे अनदेखा करने जा रहा है। उदाहरण के लिए, यदि आप एमएसटीएस्ट का उपयोग करते हैं, जब आप अपना परीक्षण चलाते हैं और यह विफल रहता है, तो कस्टम गुण प्रदर्शित नहीं होते हैं। लेकिन अगर आप बेसक्लास की संदेश संपत्ति के साथ चिपके रहते हैं, तो यह ठीक दिखाएगा।
तो उपवर्गीकरण बहुत सरल है:
public class NavigationException : Exception{
public NavigationException() {}
public NavigationException(string msg) : base(msg) {}
public NavigationException(string msg, Exception inner) : base(msg, inner) {}
}
यह बहुत स्पष्ट है, किसी भी त्रुटि लकड़हारा के साथ काम करता है, और जब मैं इसे देख, मैं जानता हूँ कि यह एक नेविगेशन समस्या थी और यदि आवश्यक हो मैं विवरण देख सकते हैं ।
ग्रेग
स्रोत
2013-08-07 19:12:35
http://bit.ly/hVTSgp की ही तरह मैं सुझाव है कि आप आगे बताते हुए आपको जो खोज रहे हैं द्वारा अपने विषय को संकीर्ण। –
मेरा बॉस चाहता है कि मैं एक प्रोग्राम के लिए एक कस्टम अपवाद वर्ग बनाना चाहता हूं जिसे मैंने लिखा है ताकि हम आसानी से विशिष्ट त्रुटियों की पहचान कर सकें। यह ऐसी चीजें होंगी: किसी विशिष्ट एक्सेल सेल में कोई डेटा नहीं, आउटफ्रेंज अपवाद (इसके लिए मानक का उपयोग कर सकते हैं), किसी विशिष्ट क्रम में अपलोड नहीं किया गया डेटा आदि। –
लगता है जैसे आप व्यापार तर्क प्रवाह को संभालने के लिए अपवादों का उपयोग कर रहे हैं - अपेक्षित जहां संभव हो अपवादों के उपयोग के बिना मुद्दों का सामना किया जाना चाहिए। – cjk