是否有效使用ArgumentOutOfRangeException,其中"范围"本质上不是数字?

时间:2017-04-29 16:49:38

标签: c# .net exception

例如,假设我编写了一个接受字符串作为输入的方法,并且我规定该字符串应仅包含ASCII字符。如果调用者传入包含非ASCII字符的字符串,抛出ArgumentOutOfRangeException是否有效,或者是否应该使用ArgumentException?

The page for ArgumentOutOfRangeException表示它是"当参数的值超出被调用方法"所定义的允许值范围时抛出的异常。它并没有在很多单词中说出"范围"问题是数字,所以对于"范围"的足够抽象的定义(该类型的可能值的宇宙的子集)可以认为ASCII字符串示例适合。我们可能会参考" ASCII和#34;的字符串范围。但是,该页面上的所有示例实际上都是数字的。实际上,它们都是整数;除了一个之外的所有索引都涉及整数索引到一个序列或某种类型的集合中(唯一一个不适合这种模式的是关于派对客人年龄的那个,在页面底部)。

1 个答案:

答案 0 :(得分:0)

维基百科说:

  

Range (mathematics),一个包含函数产生的输出值的集合。

以及

  

Set theory:[...]设置[...]是对象的集合。 [...]任何类型的对象都可以收集到一组[...]中。

函数可以返回任何类型的对象,即使在数学中也是如此。他们不需要成为数字。它们可以是矩阵,函数(在C#中可以是代理),真值,集合,人物,颜色等等。

是的,您可以将ArgumentOutOfRangeException用于除数字以外的其他类型。但自从术语"范围"通常与连续的数字范围相关联,使用ArgumentException可能更直观。