c# – 当一个未知值传递给switch语句时,我应该抛出什么类型的Exception

编辑1

更新以使枚举不是方法的参数…

使用switch语句中的枚举会出现这种类型的问题.在示例代码中,开发人员已考虑该程序当前使用的所有国家/地区,但如果将另一个国家/地区添加到Country枚举,则应抛出异常.我的问题是,应该抛出什么类型的异常?

示例代码

enum Country
{
    UnitedStates,Mexico,}

public string GetCallingCode(Guid countryId){
    var country = GetCountry(countryId);
    switch (country)
    {
        case Country.UnitedStates:
            return "1";
            break;
        case Country.Mexico:
            return "52";
            break;
        default:
            // What to throw here
        break;
    }
}

我看了看

> NotImplemented,未实现请求的方法或操作时引发的异常.
> NotSupported基类中不支持某些方法,期望这些方法将在派生类中实现.派生类可能只实现基类中的方法的子集,并为不支持方法抛出NotSupportedException.
对于有时可能对象执行请求的操作,并且对象状态确定是否可以执行操作的情况,请参阅InvalidOperationException.
如果调用方法失败是由无效参数以外的原因引起的,则使用> InvalidOperation.

我的猜测是NotImplemented或Invalid Operation.我应该使用哪一个?有人有更好的选择(我知道滚动你自己总是一个选项)

解决方法

我会使用ArgumentException,因为agrument无效.

编辑:http://msdn.microsoft.com/en-us/library/system.argumentexception%28v=vs.71%29.aspx

还有InvalidEnumArgumentException,它可能更准确地描述问题,但是,我之前没有看到任何人使用它.

相关文章

目录简介使用JS互操作使用ClipLazor库创建项目使用方法简单测...
目录简介快速入门安装 NuGet 包实体类User数据库类DbFactory...
本文实现一个简单的配置类,原理比较简单,适用于一些小型项...
C#中Description特性主要用于枚举和属性,方法比较简单,记录...
[TOC] # 原理简介 本文参考[C#/WPF/WinForm/程序实现软件开机...
目录简介获取 HTML 文档解析 HTML 文档测试补充:使用 CSS 选...