मुझे उत्सुकता है कि System.ComponentModel.InvalidEnumArgumentException
फेंकने के बाद आप अपना कोड कैसे बनाए रखेंगे।आप अवैधEnumArgumentException के साथ कोड कैसे बनाए रखते हैं?
मूल रूप से मैं इस तरह एक स्विच बयान है:
switch (enumValue)
{
case MyEnum.Value1:
break;
case MyEnum.Value2:
break;
default:
throw new InvalidEnumArgumentException();
}
क्या होगा यदि मैं अधिक मान, उदाहरण के लिए भविष्य में MyEnum
में जोड़ने के लिए, Value3
और Value4
फैसला? इसका मतलब यह होगा कि मैं एक भ्रामक अपवाद फेंकना समाप्त कर दूंगा। मैं इसे कैसे रोकूं?
क्या मुझे फेंकने से पहले प्रतिबिंब का उपयोग करना चाहिए? इस मामले में मुझे क्या अपवाद फेंकना चाहिए? मैं सुझावों की तलाश में हूं।
मैंने अभी कुछ मिनट पहले इस अपवाद की खोज की है, तो शायद मैं इसे गलत संदर्भ में देख रहा हूं। क्या यह अपवाद फेंक दिया जाता है जब एक निश्चित enum तर्क समर्थित नहीं है (किस मामले में Value3
और Value4
समर्थित नहीं होगा)?
यह गलत है। [डिजाइन दिशानिर्देशों के लिए यह अतिरिक्त] के अनुसार [http://blogs.msdn.com/b/kcwalina/archive/2004/05/18/134208.aspx), "किसी भी पूर्णांक मूल्य को एक enum में डालना कानूनी है भले ही मूल्य enum में परिभाषित नहीं किया गया है। " –
बेशक एक 'enum' मान अमान्य हो सकता है। आप उस संख्या को कास्ट कर सकते हैं जो 'एनम' प्रकार के गणना मूल्यों में से एक नहीं है। या यह एक अलग विधानसभा में परिभाषित एक गणना के कारण हो सकता है जिसे विस्तारित गणना के साथ अद्यतन किया गया था। –
ठीक है मैं कभी नहीं। ऐसा लगता है कि मैंने आज कुछ नया सीखा है। :-) – DoctorMick