【发布时间】:2017-04-29 16:49:38
【问题描述】:
例如,假设我编写了一个接受字符串作为输入的方法,并且我规定该字符串应该只包含 ASCII 字符。如果调用者传入一个包含非ASCII字符的字符串,是否抛出ArgumentOutOfRangeException有效,还是应该使用ArgumentException?
The page for ArgumentOutOfRangeException 表示它是“当参数的值超出被调用方法定义的允许值范围时引发的异常”。它并没有用太多的话说所讨论的“范围”是数字的,因此对于“范围”(该类型可能值的宇宙的一个子集)的足够抽象的定义,人们可能会争辩说 ASCII 字符串示例适合。我们很可能会提到“ASCII 字符串的范围”。但是,该页面上的所有示例实际上都是数字的。确实,它们都是整数;除了一个以外,所有的索引都涉及到某种序列或集合的整数索引(唯一不符合这种模式的是关于派对客人年龄的索引,在页面底部)。
【问题讨论】:
-
不,在这种情况下我们不会抛出 ArgumentOutOfRangeException
-
只抛出参数异常
-
在这种情况下你会扔哪一个并不重要。只要选择你认为合适的。