मैंने जोश के जवाब के लिए मतदान किया , लेकिन सूची में एक और जोड़ना चाहेंगे:
यदि तर्क मान्य है, तो System.InvalidOperationException को फेंक दिया जाना चाहिए, लेकिन ऑब्जेक्ट उस स्थिति में है जहां तर्क का उपयोग नहीं किया जाना चाहिए।
MSDN से अपडेट किया गया:
InvalidOperationException का उपयोग उन मामलों में किया जाता है जब विधि को लागू करने में विफलता अमान्य तर्कों के अलावा अन्य कारणों से होती है।
मान लीजिए कि आपकी ऑब्जेक्ट में एक PerformAction (enmSomeAction क्रिया) विधि है, मान्य enmSomeActions खुले और बंद हैं। यदि आप एक पंक्ति में दो बार PerformAction (enmSomeAction.Open) को कॉल करते हैं, तो दूसरी कॉल को InvalidOperationException को फेंक देना चाहिए (चूंकि नियंत्रण वैध था, लेकिन नियंत्रण की वर्तमान स्थिति के लिए नहीं)
चूंकि आप पहले से ही रक्षात्मक रूप से प्रोग्रामिंग करके सही काम कर रहे हैं इसलिए मेरे पास एक अन्य अपवाद है जिसका उल्लेख है ObjectDisposedException। यदि आपकी वस्तु आईडीसिसोपयोगी है, तो आपके पास हमेशा एक वैरिएबल वैरिएबल होना चाहिए जो कि डिस्पोजल स्थिति पर नज़र रखता हो; यदि आपकी वस्तु का निपटान हो गया है और एक विधि उस पर कॉल की जाती है, तो आपको ObjectDisposedException को उठाना चाहिए:
public void SomeMethod()
{
If (m_Disposed) {
throw new ObjectDisposedException("Object has been disposed")
}
// ... Normal execution code
}
अद्यतन: अपने अनुवर्ती का जवाब देने के लिए: यह एक अस्पष्ट स्थिति का एक सा है, और एक सामान्य (.NET Generics अर्थ में नहीं) डेटा के एक विशिष्ट सेट का प्रतिनिधित्व करने के लिए इस्तेमाल किया जा रहा द्वारा थोड़ा और अधिक जटिल बना दिया गया है; एक एनम या अन्य दृढ़ता से टाइप की गई वस्तु एक अधिक आदर्श फिट होगी - लेकिन हमारे पास हमेशा यह नियंत्रण नहीं होता है।
मैं व्यक्तिगत रूप से ArgumentOutOfRangeException की ओर झुकूंगा और एक संदेश प्रदान करूंगा जो मान्य मानों को दर्शाता है 1-12। मेरा तर्क यह है कि जब आप महीनों के बारे में बात करते हैं, तो यह मानते हुए कि महीनों के सभी पूर्णांक निरूपण मान्य हैं, तब आप 1-12 की सीमा में मूल्य की उम्मीद कर रहे हैं। यदि केवल कुछ महीने (जैसे महीने जिसमें 31 दिन थे) वैध थे, तो आप एक सीमा-प्रति के साथ काम नहीं करेंगे और मैं एक सामान्य तर्क को फेंक दूंगा, जो वैध मूल्यों को इंगित करता है, और मैं उन्हें विधि की टिप्पणियों में भी दस्तावेज करूंगा।