Какое правильное исключение выдается для необработанных значений перечисления?
Это еще один случай моегодругой вопрос о необработанных случаях с перечислениями который мне порекомендовали задать как отдельный вопрос.
Скажем у нас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
но термин не звучит правильно. Что правильно и почему?