如何判断我是否应该在C#中抛出ArgumentException或ArgumentNullException

时间:2016-09-05 10:04:39

标签: c# asp.net-web-api

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

谢谢

1 个答案:

答案 0 :(得分:3)

来自Docs

  

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

     

ArgumentException的主要派生类是    ArgumentNullException ArgumentOutOfRangeException 。这些派生   应该使用类而不是 ArgumentException ,除了   两个派生类都不可接受的情况。对于   例如,应该抛出异常:

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

  •   当参数的值超出可接受值的范围时,
  • ArgumentOutOfRangeException ;例如,当值   " 46"在创建a期间作为month参数传递   日期时间。

  •   

换句话说:

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