Sed*_*glu 10 .net c# exception
假设我们有SomeEnum一个switch语句处理它,如:
enum SomeEnum
{
One,
Two
}
void someFunc(SomeEnum value)
{
switch(value)
{
case One:
... break;
case Two:
... break;
default:
throw new ??????Exception("Unhandled value: " + value.ToString());
}
}
Run Code Online (Sandbox Code Playgroud)
如您所见,我们处理所有可能的枚举值但仍保留默认值,以防添加新成员,并且我们希望确保我们知道缺少的处理.
我的问题是:在你想要通知给定的代码路径没有被处理/实现或者从未被访问过的情况下,什么是正确的异常?我们曾经使用NotImplementedException但它似乎不合适.我们的下一个候选人是,InvalidOperationException但这个词听起来不对.什么是正确的,为什么?
Ode*_*ded 18
ArgumentException 在这个例子中看起来对我来说最正确(虽然没有在BCL中定义).
枚举参数有一个专门的例外--InvalidEnumArgumentException:
使用作为枚举数的无效参数时抛出的异常.
另一种方法是ArgumentOutOfRangeException:
当参数的值超出被调用方法定义的允许值范围时引发的异常.
使用它们的逻辑是传入的参数(value)无论如何都是无效的someFunc.
| 归档时间: |
|
| 查看次数: |
9938 次 |
| 最近记录: |