msi*_*msi 0 c# exception-handling indexer gendarme
我有索引器并想检查它是否为空,如果是,则抛出ArgumentNullException,但Gendarme设置警告
InstantiateArgumentExceptionCorrectlyRule:此方法抛出ArgumentException(或派生)异常,而不指定现有参数名称.这可以向开发人员隐藏有用的信息.修复异常参数以使用正确的参数名称(或确保参数的顺序正确).
public override LocalizedString this[string key]
{
get
{
if (key == null)
{
throw new ArgumentNullException("key");
}
return base[key];
}
set
{
if (key == null || value == null)
{
throw new ArgumentNullException("key");
}
base[key] = value;
}
}
Run Code Online (Sandbox Code Playgroud)
如何修复索引器?
好吧,现在肯定不对.看这个:
if (key == null || value == null)
{
throw new ArgumentNullException("key");
}
Run Code Online (Sandbox Code Playgroud)
这意味着它将抛出一个异常,声称"key"在它实际上应该是"value"时为null.
所以代码应如下所示:
if (key == null)
{
throw new ArgumentNullException("key");
}
if (value == null)
{
throw new ArgumentNullException("value");
}
Run Code Online (Sandbox Code Playgroud)
我不知道是否会修复警告,但这将是正确的代码.
此错误报告表明这是Gendarme中的一个尚未修复的错误.如果您可以明确禁用该索引器的警告,那可能是最好的方法.(我没有使用过宪兵,所以我不知道这是否可行,但值得研究.)
| 归档时间: |
|
| 查看次数: |
312 次 |
| 最近记录: |