考虑以下类和方法:

public class MyDto
{
    public MyDtoChild Child {get; set;}
}


public void ProcessDto(MyDto myDto)
{
    if(myDto == null) throw new ArgumentNullException("myDto");
    this.CheckSomething(myDto.Child.ChildProperty);
}

如果用自己的设备留下了一个空MyDtoChild进行调用,则会抛出一个NullReferenceException,这在更复杂的方法中很难诊断。

通常,如果ArgumentNullException为null,则在方法开始时抛出myDto,但是如果myDto.Children为null,则抛出什么适当的异常? ArgumentNullExceptionNullReferenceException?自定义异常(exception)?

最佳答案

正如前面的答案所提到的,它不应该是ArgumentNullException,因为参数myDTO不为NULL。
对我来说,抛出 ArgumentException 更有意义,因为传递给该方法的参数不符合要求(您希望Children不为空)。此外,您的情况符合ArgumentException的描述:

关于c# - 抛出哪个Null异常?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24648019/

10-09 04:10