c# – 如何使用InvalidEnumArgumentException维护代码?
发布时间:2020-12-15 08:11:39 所属栏目:百科 来源:网络整理
导读:我很好奇,一旦抛出System.ComponentModel.InvalidEnumArgumentException,你将如何维护你的代码. 基本上我有一个像这样的开关语句: switch (enumValue){ case MyEnum.Value1: break; case MyEnum.Value2: break; default: throw new InvalidEnumArgumentExce
我很好奇,一旦抛出System.ComponentModel.InvalidEnumArgumentException,你将如何维护你的代码.
基本上我有一个像这样的开关语句: switch (enumValue) { case MyEnum.Value1: break; case MyEnum.Value2: break; default: throw new InvalidEnumArgumentException(); } 如果我决定将来向MyEnum添加更多值,例如Value3和Value4,该怎么办?这意味着我最终会抛出一个误导性的例外.我该如何防止这种情况? 我应该在投掷之前使用反射吗?在这种情况下我应该抛出什么异常?我正在寻找建议. 我刚刚在几分钟前发现了这个例外,所以也许我在错误的背景下看这个.当不支持某个枚举参数时会抛出此异常(在这种情况下,不支持Value3和Value4)? 解决方法
您声明的问题取决于上下文,如果方法接收枚举作为参数,则必须指定它支持的值以及它对未知枚举值的作用.
如果添加更多枚举选项,即使未在默认情况下抛出异常,也需要确定要执行的操作. 请注意,异常特别有用,因为您可以将任何整数作为枚举值传递. 例如: enum Foo { A,B } static int Bar(Foo f) { switch (f) { case Foo.A: return 1; case Foo.B: return 2; default: throw new InvalidEnumArgumentException("f",(int)f,typeof(Foo)); } } static void Main() { Bar(Foo.A); Bar((Foo)99); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |