2013-05-08 61 views
9

我知道摘要和说明。InvalidOperationException与ArgumentException

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

我认为ArgumentException更合适,因为InvalidOperationException文档说对象本身在调用方法时必须处于无效状态,对吗?

+0

太本地化......实际用户不关心这个......重要的是你从中获得了什么,所以它是纯粹的品味...... – 2013-05-08 07:20:37

回答

11

文档指出:相当明确:

出现InvalidOperationException在情况下使用时,未能调用 的方法是由原因其他不是无效的参数引起的。
...
如果方法调用失败是由于无效的参数,然后 的ArgumentException或其派生类之一,ArgumentNullException 或ArgumentOutOfRangeException,应改用抛出。

您的方法期望参数处于某种状态,其中可能包括任何内容,包括处于由参数类型本身定义的“有效状态”。
我认为不同的主要观点是问题的根源:
它是您调用方法的参数或对象吗?

0

您可能错过了缺乏示例。

ArgumentException:由于传递给该函数的参数无效,因此示例将是一个函数以异常结束。在特定情况下,使用任何防御机制都可以正确处理这种例外情况。

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