当这些方法重载/调用其他公共方法时,我不确定如何在公共方法中正确处理参数验证。
例如:
class Example
{
public bool Has(string key)
{
if (key == null)
throw new ArgumentNullException(nameof(key));
return false;
}
public object Get(string key)
{
// Should I check if key is null here?
if (!Has(key))
throw new ArgumentException("No key exists", nameof(key));
return null;
}
}
这显然是一个简单的例子,但是处理这个问题的首选方法是什么,特别是考虑到可能最终调用几个公开可见方法的多个参数?
我应该在每个单独的方法上抛出异常/验证参数(这会导致大量重复/多次检查相同的条件),或者将检查委托给其他方法是否可接受(在本例中,让#39 ;有方法检查密钥是否有效,并且不在“Get&#39”方法中这样做。
答案 0 :(得分:0)
您不需要在每个方法上抛出异常。你的" Has"方法将传播到堆栈中以获取"获取"方法,如果你在一个单点处理验证,那就没问题了。但是,我建议您检查抛出异常是否是最适合您需求的方法,或者是否可以用其他方式处理它。