我知道摘要和说明。
但是如果ARGUMENT处于无效状态怎么办?
我认为ArgumentException更合适,因为InvalidOperationException文档说该方法被调用的对象必须处于无效状态。这有意义吗?
答案 0 :(得分:13)
文档说得很清楚:
InvalidOperationException用于无法调用的情况 一个方法是由其他的原因引起的,而不是无效的参数 ...
如果方法调用失败是由于无效的参数,那么 ArgumentException或其派生类之一,ArgumentNullException 或者应该抛出ArgumentOutOfRangeException。
您的方法希望参数处于某种状态,其中可能包括任何状态,包括处于"有效状态"由参数类型本身定义。
我认为主要的不同点是问题的根源:
它是您调用方法的参数或对象吗?
答案 1 :(得分:2)
你可能因为缺乏榜样而错过了。
ArgumentException
:由于传递给该函数的参数无效,因此示例将是一个函数以异常结束。使用任何防御机制都可以正确处理这种异常,这在特定情况下是理想的。
InvalidOperationException
:示例是在枚举器生效时修改集合。这会导致无效的操作异常。