如何决定我应该在 C# 中抛出 ArgumentException 还是 ArgumentNullException

rav*_*dra 0 c# asp.net-web-api

正如我的问题中所述,我想知道c# 异常中ArgumentArgumentNull异常之间的逻辑区别是什么。

谢谢

Zei*_*kki 5

文档

当一个方法被调用并且至少一个传递的参数不符合被调用方法的参数规范时,抛出 ArgumentException。ParamName 属性标识无效参数。

ArgumentException 的主要派生类是 ArgumentNullExceptionArgumentOutOfRangeException。应该使用这些派生类而不是ArgumentException,除非在派生类都不可接受的情况下。例如,异常应该通过以下方式抛出:

  • ArgumentNullException每当 null 传递给不接受它作为有效参数的方法时。

  • ArgumentOutOfRangeException当参数值超出可接受值的范围时;例如,在创建 DateTime 期间将值“46”作为月份参数传递时。

换句话说:

ArgumentException表示至少一个参数规范无效。这并不意味着它是NULL,它可以是任何不满足的规则。ArgumentNullException当规则是参数不为NULL时,这只是一个特例