检查方法的参数时是否抛出异常?

Álv*_*cía 5 c# exception

我想在使用它们之前检查方法的所有参数是否都有正确的信息.像这样的东西:

public method(MyType param1)
{
try
{
    if(param1 == null)
    {
        throw new ArgumentNullException("Error1");
    }
    if(param1.Property1 == null)
    {
        throw new ArgumentNullException("Error2");
    }

    if(param1.Property1.Amount <= 0)
    {
        throw new ArgumentException("Error3");
    }

    ...


    //Do what I need with the parameter
}
catch { throw; }
}
Run Code Online (Sandbox Code Playgroud)

然而,在这篇文章中,有人评论说将异常作为正常流程抛出并不是一个好主意,但我不确定是否是这种情况,因为如果我必须检查参数,还有例如ArgumentNullExceptionArgumentException它似乎可以在参数出现问题时被抛出,这让我想知道它是否真的是一个糟糕的方法,我评论的例子.

另一个用户给出的另一个原因是异常消耗4000-8000个CPU周期.好吧,在我的情况下的目标是知道参数是否有一些错误,并且如果应用程序按预期工作,则永远不会抛出异常,因此在实践中,如果应用程序没有错误,那么性能不会减少.

总而言之,我想知道在继续该过程之前如何处理参数检查的最佳方法.

谢谢.

Kap*_*pol 1

在参数验证后抛出异常是一个好方法。通过这种方式,您可以明确地让使用您的方法的开发人员知道他错误地调用了该方法,这使他能够轻松修复此错误。

不过,我肯定会去掉这个try...catch部分。它绝对是多余的,并且使代码比需要的更复杂(并且有点令人困惑)。