加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 04:33:43 所属栏目:百科 来源:网络整理
导读:编辑1 更新以使枚举不是方法的参数… 题 使用switch语句中的枚举会出现这种类型的问题.在示例代码中,开发人员已考虑该程序当前使用的所有国家/地区,但如果将另一个国家/地区添加到Country枚举,则应抛出异常.我的问题是,应该抛出什么类型的异常? 示例代码:
编辑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,它可能更准确地描述问题,但是,我之前没有看到任何人使用它.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读