c# – 如何使用InvalidEnumArgumentException维护代码?

c# – 如何使用InvalidEnumArgumentException维护代码?,第1张

概述我很好奇,一旦抛出System.ComponentModel.InvalidEnumArgumentException,你将如何维护你的代码. 基本上我有一个像这样的开关语句: switch (enumValue){ case MyEnum.Value1: break; case MyEnum.Value2: break; defaul 我很好奇,一旦抛出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);}
总结

以上是内存溢出为你收集整理的c# – 如何使用InvalidEnumArgumentException维护代码?全部内容,希望文章能够帮你解决c# – 如何使用InvalidEnumArgumentException维护代码?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1247411.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存