當程序達到我「知道」不會發生的邏輯狀態時,應該使用哪種例外情況,如果情況確實如此,那麼情況會非常糟糕。我的程序中應該拋出哪些異常來表示內部錯誤?
例如:
int SomeFunction(int arg) {
SomeEnum x = Whatever(arg, somePrivateMember);
switch (x) {
case SomeEnum.Value1:
return SomeFunction1();
case SomeEnum.Value1:
return SomeFunction2();
default:
throw new WhatTypeToThrow();
}
}
顯然,ArgumentException的是一個長鏡頭在這裏,因爲x的值無效能夠在不管(),或任何參數組合無效和/或都來自一個bug當前實例狀態。
我正在尋找諸如InvalidProgramStateException,InternalErrorException或類似的東西。
當然,我可以定義我自己的,但我不知道框架中是否有合適的例外。
編輯:刪除簡單示例代碼以減少ArgumentException答案的數量。
爲什麼不使用您已經建議的名稱創建自己的異常?或者'ShouldNotHappenException'怎麼樣? ;-) – 2010-07-22 22:21:55
@ 0xA3這不算最佳做法 – 2010-07-22 23:09:47
@erik:這裏沒有內部錯誤。您在傳遞給您的方法的參數中有錯誤。這可能相當於全局意義上的內部錯誤,但是您在本地級別上具有的是「ArgumentOutOfRangeException」,正如下面所述的「chibacity」所示。 – 2010-07-22 23:13:37