InvalidOperationException与ArgumentException

时间:2013-05-08 07:18:20

标签: c# invalidoperationexception argumentexception

我知道摘要和说明。

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

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

2 个答案:

答案 0 :(得分:13)

文档说得很清楚:

  

InvalidOperationException用于无法调用的情况   一个方法是由其他的原因引起的,而不是无效的参数   ...
  如果方法调用失败是由于无效的参数,那么   ArgumentException或其派生类之一,ArgumentNullException   或者应该抛出ArgumentOutOfRangeException。

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

答案 1 :(得分:2)

你可能因为缺乏榜样而错过了。

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

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

相关问题