13

我知道摘要和描述。

但是如果 ARGUMENT 处于无效状态怎么办?

我认为 ArgumentException 更合适,因为 InvalidOperationException 文档说,调用该方法的对象本身必须处于无效状态。这有意义吗?

4

2 回答 2

16

文档说得很清楚:

InvalidOperationException 用于调用方法失败是由无效参数以外的原因引起的情况。
...
如果方法调用失败是由于参数无效,则应改为抛出 ArgumentException 或其派生类之一 ArgumentNullException 或 ArgumentOutOfRangeException。

您的方法期望参数处于某种状态,这可能包括任何内容,包括处于由参数类型本身定义的“有效状态”。
我认为主要区别在于问题的根源:
是参数还是您调用方法的对象?

于 2013-05-08T07:26:51.633 回答
2

您可能因缺乏示例而错过了。

ArgumentException:示例将是一个函数由于传递给该函数的参数无效而导致异常。使用在给定情况下理想的任何防御机制来正确处理这种异常。

InvalidOperationException:示例将在枚举器生效时修改集合。这会导致无效操作异常。

于 2013-05-08T07:33:30.137 回答