c# - 访问参数的属性时使用 ArgumentNullException

标签 c# exception exception-handling conventions

假设我有一个类(class) 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在这种情况下不是一个论点吗?我have read并且可以理解,抛出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 的“正确”用法吗? ?处理这种情况的常规方法是什么?

谢谢。

最佳答案

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

关于c# - 访问参数的属性时使用 ArgumentNullException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15099218/

相关文章:

c# - 如何检查 IOException 是否为 Not-Enough-Disk-Space-Exception 类型?

c# - 如何从 SQL 查询生成 List<String>?

javascript - TypeScript 中的异常嵌套/包装

java - 是否可以在不使用多个 catch 语句的情况下捕获多个异常并对其执行不同的逻辑?

java - JFreeChart 抛出 java.util.ConcurrentModificationException

java - 从 CompletableFuture 抛出异常

c++ - 为什么我的异常在某些配置上被捕获而在其他配置上却没有?

c# - NerdDinner 示例的 Dinner.GetRuleViolations 函数如何返回列表?

c# - 在C#中将类作为参数传递,然后想要访问类的属性

c# - Microsoft UIAutomation 无法检索 WPF GroupBox 中的子组件