索引getter中的IndexOutOfRangeException
在我的索引属性中,我检查索引是否超出范围。 如果是,我抛出一个IndexOutOfBoundsException
。
当我运行Code Analyst(在VS12中)时,它会抱怨CA1065:意外位置发生意外exception。
仅参考CA1065的描述
System.InvalidOperationException System.NotSupportedException System.ArgumentException KeyNotFoundException
允许在索引的getter中。
抛出IndexOutOfBoundsException
对我来说似乎很自然,那么这里的推理是什么? (是的,我知道我可以关闭警告,我只是想知道推理)
很多类都使用ArgumentOutOfRangeException
,包括List
。 这是ArgumentException
的子类,所以应该满足规则。 我想你可以争辩说,对于直接访问的向量等,实际上没有方法调用(它是一个专用的操作码ldelem*
),因此在这种情况下索引实际上不是一个参数。 但是,这似乎是一个微弱的论点。
请参阅MSDN: IndexOutOfRangeException是系统exception并保留用于访问数组元素。 它被一些MSIL指令抛出:ldelem。,ldelema,stelem ..
对于开发类,请使用ArgumentOutOfRangeException。