जैसा कि अन्य ने कहा है, आपको यह मानना चाहिए कि कोड की प्रत्येक पंक्ति अपवाद फेंक सकती है, जब तक कि आप साबित न करें कि यह नहीं हो सकता है। बेहतर सवाल यह है कि, "आप इसके बारे में क्या करने की योजना बना रहे हैं?"
सामान्य रूप से, आपको किसी भी अपवाद को पकड़ना नहीं चाहिए।
बेशक, बाकी सब कुछ उस नियम का अपवाद है। इसे लॉग इन करने के लिए अपवाद को पकड़ना समझ में आता है (यदि आपका पर्यावरण आपके लिए ऐसा नहीं करता है, जैसा कि एएसपी.नेट करता है)। यह समझ में आता है क्रम में एक और अपवाद है कि संदर्भ के बारे में और अधिक विस्तार प्रदान करता है के साथ बदलने के लिए एक अपवाद को पकड़ने के लिए:
public int GetConfiguredInteger(string name) {
string s = null;
try {
s = GetStringFromConfigFile(name);
}
catch (IOException ex) {
throw new Exception(String.Format(
"Error in configuration file foo.config when processing {0}", name),
ex);
}
return int.Parse(s);
}
फोन करने वाले को पता ही न हो सकता है कि IOException एक कॉन्फ़िग फ़ाइल के कारण हुई थी अगर तुम hadn ' टी ने उन्हें बताया। ध्यान दें कि मैंने फ़ाइल I/O से संबंधित सभी अपवादों को कैसे नजरअंदाज किया। विशेष रूप से, ध्यान दें कि int.Parse कोशिश/पकड़ ब्लॉक के अंदर भी नहीं है।
ऐसे कुछ अपवाद हैं, लेकिन अपवादों को पकड़ने का मूल विचार यह है: ऐसा तब तक न करें जब तक आप नहीं करते।
स्रोत
2009-05-27 15:10:06
एंडर्स हेजल्सबर्ग के साक्षात्कार के साथ डारीम के लिंक में एक दिलचस्प उद्धरण था जो वास्तव में मेरे बिंदु को समझाता है: "लेकिन कहा, यह जानने में निश्चित रूप से जबरदस्त मूल्य है कि कौन से अपवादों को फेंक दिया जा सकता है, और कुछ प्रकार के उपकरण की जांच होती है। ऐसा नहीं लगता कि हम कठोर और तेज़ नियमों का निर्माण कर सकते हैं, यह या तो एक कंपाइलर त्रुटि है या नहीं। लेकिन मुझे लगता है कि हम विश्लेषण उपकरण के साथ निश्चित रूप से बहुत कुछ कर सकते हैं जो संदिग्ध कोड का पता लगाता है, जिसमें बिना अपवाद अपवाद शामिल हैं, और उन संभावित छेदों को इंगित करता है आपके लिए " – Toad
FxCop ऐसा टूल है, लेकिन afaik यह आपको अपवाद अपवादों के बारे में चेतावनी नहीं देता है .. काफी विपरीत: http://blogs.msdn.com/fxcop/archive/2006/06/14/631923.aspx – VVS
आपके द्वारा लिंक किया गया आलेख भी सामान्य अपवाद खंडों के बारे में बात करता है: पकड़ें (अपवाद ई) और इसे आम तौर पर संभालने का प्रयास करें। वे उन अपवादों को निर्दिष्ट करने का बिंदु बनाते हैं जिन्हें आप सौदा करना चाहते हैं और बाकी प्रवाह को छोड़ दें। मैं पूरी तरह से सहमत हूं, लेकिन मेरा बिंदु अभी भी खड़ा है: कृपया बताएं कि कौन से अपवाद मैंने याद किए हैं और वास्तव में नहीं हैं। अपवाद शिकारी उपकरण वास्तव में ऐसा करने लगता है जो मुझे चाहिए। कल यह देखने के लिए मेरे पास एक खेल होगा कि यह किस तरह का विश्लेषण करता है और यहां रिपोर्ट करता है। – Toad