抛出ArgumentOutOfRangeException是正确的事吗?

时间:2013-07-23 17:21:06

标签: .net exception-handling standards-compliance

只是为了最佳实践而在这里寻求一些建议。

我有一个布尔方法,用于检查数组中每个元素的特定条件。数组参数不能为空,也不能包含空值,否则返回true或false是没有意义的。

Best practices表示如果将无效参数传递给方法,则应抛出ArgumentException(或派生)。如果数组参数为null,则该方法将抛出ArgumentNullException。但是,我不太确定我应该为空数组或包含空值的数组抛出什么。

我最初的想法是抛出一个简单的ArgumentException,其中包含一条解释问题性质的消息,但是一位同事暗示我会抛出一个ArgumentOutOfRangeException。

我通常认为ArgumentOutOfRangeException是“太高”或“太低”的东西。我的同事似乎相信它也可以代表“不够”和“缺少某些东西”。

他是对的吗?或者我应该遵循我的第一个想法并抛出ArgumentException?

1 个答案:

答案 0 :(得分:1)

MSDN表示如果参数为非null,则应抛出ArgumentOutOfRangeException。因此,这不是一个适当的异常类型。

您提到您还想检查数组是否为空。如果你这样做,那么抛出ArgumentNullException也是不合适的。

这会让你失去ArgumentException。