InvalidOperationException vs. ArgumentException

本文关键字:ArgumentException vs InvalidOperationException | 更新日期: 2023-09-27 18:12:40

我知道摘要和描述。

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

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

InvalidOperationException vs. ArgumentException

文档说得很清楚:

InvalidOperationException用于调用失败的情况方法是由除无效参数以外的原因引起的。

…如果方法调用失败是由于无效参数造成的,则或其派生类之一ArgumentNullException或ArgumentOutOfRangeException,应该被抛出。

你的方法期望参数处于某种状态,这种状态可以包括任何东西,包括参数类型本身定义的"有效状态"。
我认为主要的不同点是问题的根源:
它是你调用方法的参数还是对象?

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

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

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