5

假设我有一个Foo具有复杂属性的类Bar。然后,假设我在其他类中有如下方法:

public void DoSomething(Foo foo)
{
    if (foo == null)
        throw new ArgumentNullException("foo");
    if (foo.Bar == null)
        throw new ArgumentNullException("bar");
}

ArgumentNullException即使严格来说,foo.Bar在这种情况下不是一个论点,这里是否使用适当的?我已经阅读NullReferenceException并且可以理解手动抛出一个是不合适的。这是在告诉我我需要抽象吗?

public void DoSomething(Foo foo)
{
    if (foo == null)
        throw new ArgumentNullException("foo");
    DoSomethingElse(foo.Bar);
}

private void DoSomethingElse(Bar bar)
{
    if (bar == null)
        throw new ArgumentNullException("bar");
}

我的第一个代码片段是“正确”的用法ArgumentNullException吗?处理这种情况的常规方法是什么?

谢谢。

4

1 回答 1

12

理想情况下,Foo该类将确保其Bar属性永远不会为空。如果那不可能,我会ArgumentException在这种情况下抛出一个,因为参数不为空,但它是无效的。

于 2013-02-26T21:09:50.830 回答