Jam*_*ead 10 c# exception switch-statement
我应该抛出一个NotImplementedException()上default,如果我对所有可能的枚举类型的案件?
Mik*_*fer 13
如果你正在寻找一个值,根据定义,它必须对应于枚举的值,并且你已经收到了其他东西,那肯定是一个无效的参数.
但现在你必须考虑上下文.
方法是私有的,只能由类库或应用程序的成员访问吗?如果是,那就是编码错误,首先不应该发生.断言并失败.
另一方面,如果它是一个公共或受保护的方法,并且可以被使用您的库的客户端访问,那么您应该使用有意义的消息(最好是一个众所周知的异常类型).
重要的是要记住,在框架中没有对枚举进行范围检查.我可以指定一个方法需要一个Environment.SpecialFolder类型的参数; 但它会接受任何 32位整数值.
所以,简而言之,如果你的方法是公共消费,是的,无论如何,扔掉.如果不是为了公共消费,请断言.
这真的取决于.
该NotImplementedException是一样的东西待办事项标记为我.这意味着有人会在稍后完成代码.但是,我不认为这种情况不应该发生.
在检查对象的状态时,可以考虑InvalidOperationException.您的方法仅适用于现有案例.
当您区分输入参数时,ArgumentException始终是合适的.
在其他情况下,我更喜欢NotSupportedException.它略微表明平台或版本出了问题.并且当不应该发生的默认情况切换时,代码的不兼容版本是问题的真正根源.