这是我关于未处理的枚举案例的另一个问题的另一个案例,建议我将其作为一个单独的问题提出。
假设我们有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
,但这个词听起来不对。什么是正确的,为什么?