考虑以下类和方法:
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);
}
如果用自己的设备留下了一个空
MyDto
的Child
进行调用,则会抛出一个NullReferenceException
,这在更复杂的方法中很难诊断。通常,如果
ArgumentNullException
为null,则在方法开始时抛出myDto
,但是如果myDto.Children
为null,则抛出什么适当的异常? ArgumentNullException
? NullReferenceException
?自定义异常(exception)? 最佳答案
正如前面的答案所提到的,它不应该是ArgumentNullException
,因为参数myDTO
不为NULL。
对我来说,抛出 ArgumentException
更有意义,因为传递给该方法的参数不符合要求(您希望Children不为空)。此外,您的情况符合ArgumentException的描述:
关于c# - 抛出哪个Null异常?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24648019/