gpt4 book ai didi

c# - 抛出 ArgumentNullException

转载 作者:IT王子 更新时间:2023-10-29 03:46:23 25 4
gpt4 key购买 nike

假设我有一个方法将某种对象作为参数。现在说如果这个方法传递了一个空参数,这是一个 fatal error ,应该抛出一个异常。编写这样的代码对我来说是否值得(记住这是一个微不足道的例子):

void someMethod(SomeClass x)
{
if (x == null){
throw new ArgumentNullException("someMethod received a null argument!");
}

x.doSomething();
}

或者当它调用 x.doSomething() 时仅仅依靠它抛出 NullException 对我来说是否安全?

其次,假设 someMethod 是一个构造函数,并且在调用另一个方法之前不会使用 x。我应该立即抛出异常还是等到需要 x 时再抛出异常?

最佳答案

与不检查参数的 NullReferenceException 相比,我更喜欢 ArgumentNullException。通常,我的偏好是在尝试对可能为空的对象调用方法之前始终检查是否为空。

如果该方法是一个构造函数,那么它将取决于几个不同的因素:该属性是否还有一个公共(public) setter 以及该对象实际被使用的可能性有多大。如果有公共(public) setter,则不通过构造函数提供有效实例是合理的,不应导致异常。

如果没有公共(public) setter 并且可以在不引用注入(inject)对象的情况下使用包含对象,您可能希望推迟检查/异常直到尝试使用它。不过,我认为一般情况下,注入(inject)的对象对于实例的功能是必不可少的,因此 ArgumentNull 异常是完全合理的,因为没有它实例就无法运行。

关于c# - 抛出 ArgumentNullException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/368742/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com