Это еще один случай моего другого вопроса о необработанных случаях с перечислениями, о котором мне было предложено задать отдельный вопрос.
Скажем, у нас есть SomeEnum
и оператор switch, обрабатывающий его как:
enum SomeEnum
{
One,
Two
}
void someFunc()
{
SomeEnum value = someOtherFunc();
switch(value)
{
case One:
... break;
case Two:
... break;
default:
throw new ??????Exception("Unhandled value: " + value.ToString());
}
}
Как вы видите, мы обрабатываем все возможные значения перечисления, но по-прежнему сохраняем исключение по умолчанию для исключения, если новый член добавляется, и мы хотим убедиться, что мы знаем о недостающей обработке.
Мой вопрос: какое правильное исключение в таких обстоятельствах, когда вы хотите уведомить, что данный код не обрабатывается/не реализован или его никогда не посещали? Раньше мы использовали NotImplementedException
, но, похоже, он не подходит. Наш следующий кандидат InvalidOperationException
, но этот термин звучит не так. Какой правильный и почему?