我很好奇,一旦你拋出System.ComponentModel.InvalidEnumArgumentException
,你將如何維護你的代碼。如何維護InvalidEnumArgumentException的代碼?
基本上我有一個switch語句是這樣的:
switch (enumValue)
{
case MyEnum.Value1:
break;
case MyEnum.Value2:
break;
default:
throw new InvalidEnumArgumentException();
}
如果我決定更多的值在將來添加到MyEnum
,例如,Value3
和Value4
什麼?那意味着我最終會拋出一個誤導性的例外。我將如何防止這種情況?
我應該在投擲之前使用反射嗎?我應該拋出什麼例外情況?我在尋找建議。
我剛剛在幾分鐘前發現了這個異常,所以也許我在錯誤的上下文中看到了這個。如果某個枚舉參數不受支持(這種情況下Value3
和Value4
不被支持),這個異常會拋出嗎?
這是錯誤的。根據[此設計指導原則的補充](http://blogs.msdn.com/b/kcwalina/archive/2004/05/18/134208.aspx),「將任何整數值轉換爲枚舉是合法的即使該值未在枚舉中定義。「 –
當然,一個'enum'值可能是無效的。您可以將不是枚舉值之一的數字轉換爲enum類型。或者這可能是由枚舉定義在使用擴展枚舉更新的其他程序集中定義的。 –
好吧,我從來沒有。看起來我今天學到了一些新東西。 :-) – DoctorMick