我已多次看到以下异常情况
public SomeClass(IEnumerable<T> someValues)
{
if (null == someValues)
{
throw new ArgumentNullException("someValues");
}
int counter = 0;
foreach (T value in someValues)
{
if (null == value)
{
string msg = counter + "th value was null";
// What exception class to use?
throw new ArgumentException(msg, "someValues");
}
counter++;
}
}
Run Code Online (Sandbox Code Playgroud)
是否有处理这些案件的指导方针?通常,有任何描述"异常样式"的指南比MSDN文档更详细
如果存在null参数,则抛出ArgumentNullException.
如果有一个超出其范围的参数,则抛出ArgumentOutOfRange异常(如负数,其中只有正数.)
如果参数因其超出范围或null之外的原因而无效,则抛出ArgumentException.
如果调用因与参数值无关的原因而无效,则抛出InvalidOperationException.
在这种特殊情况下,我可能会选择ArgumentException.该参数无效,因为其内容无效.
当然,所有这些都是异常,表明调用者有错误.给出最好的错误是一个好习惯,这样错误调用者的作者就可以快速诊断出问题.因此,我会考虑在异常中添加一条自定义消息,说"序列错误的元素出乎意料地为空"或者其他类似的东西.
| 归档时间: |
|
| 查看次数: |
1108 次 |
| 最近记录: |