首页 / 知识
关于c#:尝试在集合中插入重复对象时抛出的正确.NET异常是什么?
2023-04-14 20:55:00

What is the correct .NET exception to throw when try to insert a duplicate object into a collection?我有一个Asset对象,该对象具有一个属性AssignedSoftware,它是一个集合。 我想确保同一软件不能多次分配给资产。在添加方法中,我检查该软件是否已经存在,如果存在,我想抛出一个异常。 我应该抛出一个标准的.NET异常吗?还是最佳实践指示我创建自己的自定义异常? 为什么 如果具有调用的方法/属性的对象由于未初始化状态等而无法处理请求,则应使用 这应该是ArgumentException。 如果您尝试两次将具有相同键值的项添加到哈希表中,则 .Net将引发System.ArgumentException,因此看起来没有更具体的内容。如果需要更具体的信息,则可能需要编写自己的异常。 有关错误的类库设计准则(http://msdn.microsoft.com/zh-cn/library/8ey5ey87(VS.71).aspx):
在我看来,这是一个"对象状态无效"的情况,因此我选择InvalidOperationException而不是ArgumentException:参数是有效的,但此时在对象生命周期中不起作用。 您可能应该抛出ArgumentException,因为这就是基础库类所做的。 好吧,如果您真的想要一个包含唯一项的集合,则可能需要看一下HashSet对象(在C#3.0中可用)。 否则,您可以采用两种方法:
只要您的用法一致,就可以将这两种方法都视为最佳实践。 |
最新内容
相关内容
linux无效对象的命令?
linux无效对象的命令?,软件,系统,单位,网络,管理,术语,检测,电脑,环境,风险,linux疑问:普通用户的ifconfig命令无法执行,如何解决?建议这个操linux命令查看包属性?
linux命令查看包属性?,时间,系统,信息,状态,命令,文件,通讯录,管理,情况,标准,Linux文件相关命令命令一:cat cat命令应该是在Linux中查看文件内linux插入命令模式?
linux插入命令模式?,工作,系统,地址,管理,信息,时间,命令,目录,平均,项目,Linux命令1、linux系统常用操作命令如下:ls:全拼list,功能是列出目录的linux文本中插入命令?
linux文本中插入命令?,工作,地址,系统,命令,信息,第一,工具,地方,密码,情况,Linux下常用文本处理命令简单说明使用file命令可以知道某个文件究linuxvi插入命令?
linuxvi插入命令?,系统,状态,信息,工作,命令,标准,管理,名称,电脑,正规,linux系统vi命令详解1、将文件保存或退出vi,也可以设置编辑环境,如寻找linux内核属性命令?
linux内核属性命令?,系统,地址,时间,信息,标准,管理,数据,工作,百分比,内核,一般优化linux的内核,需要优化什么参数1、说起优化,其实最好的优化python创建一个集合?
python创建一个集合?,异常,代码,括号,元素,函数,方法,两个,整数,操作,字符串,在Python中,集合是一种无序且不重复的数据类型,可以用于存储一组元pythonPandas Series对象有哪些属
pythonPandas Series对象有哪些属性?,工具,数据,数字,分析,培训,属性,数据类型,数组,对象,索引,想必大家都知道pandas,它是基于Numpy的一种工具python是面向对象还是面向过程的
python是面向对象还是面向过程的,数据,代码,基础,形态,培训,术语,设计,对象,过程,语言,Python虽然是解释型语言,但从设计之初就已经是一门面向如何在Python中定义类方法和修改类
如何在Python中定义类方法和修改类属性?,代码,方法,培训,对象,实例,定义,结果,示例,赋值,属性,Python中的类还可定义使用@classmethod修饰的类实现Python对象的持久化存储
实现Python对象的持久化存储,数据,对象,系统,函数,培训,标准,环境,管理,参数,文件,Python中有个序列化过程叫作pickle,它能够实现任意对象与文python之访问对象的元数据
python之访问对象的元数据,数据,异常,培训,属性,模块,对象,类型,定义,文档,实例,当你对一个你构造的对象使用dir()时,可能会发现列表中的很多