验证公共方法参数

时间:2016-01-07 01:59:56

标签: c#

当这些方法重载/调用其他公共方法时,我不确定如何在公共方法中正确处理参数验证。

例如:

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”方法中这样做。

1 个答案:

答案 0 :(得分:0)

您不需要在每个方法上抛出异常。你的" Has"方法将传播到堆栈中以获取"获取"方法,如果你在一个单点处理验证,那就没问题了。但是,我建议您检查抛出异常是否是最适合您需求的方法,或者是否可以用其他方式处理它。