mve*_*ith 9 c# validation parameters
我知道有两种方法可以检查方法的参数,并在需要时抛出异常.
1)检查每个参数并在错误时抛出异常:
public void Method(object parameter1, object parameter2)
{
if (parameter1 == null)
{
throw new ArgumentNullException("parameter1");
}
if (parameter2 == null)
{
throw new ArgumentNullException("parameter2");
}
...
}
Run Code Online (Sandbox Code Playgroud)
2)立即检查所有参数并为所有参数抛出相同的异常:
public void Method(object parameter1, object parameter2)
{
if (parameter1 == null || parameter2 == null)
{
throw new ArgumentNullException();
}
...
}
Run Code Online (Sandbox Code Playgroud)
在我看来,第一种方法更好,更清洁,但也涵盖了很多方面.例如,实际执行2行代码的方法 - 以这种方式代码将为每个参数增加4行(包括空行).
我感兴趣的是有经验的程序员使用的方法.有没有比这两个更好的方法?
Dom*_*icz 22
如果您使用的是.NET Framework 4,请查看代码合同,将其简化为单行代码
public string Reverse(string text)
{
Contract.Requires<ArgumentNullException>(text!=null, "ParAmeter cannot be null.");
.....
}
Run Code Online (Sandbox Code Playgroud)
您之所以会这样做是因为您现在可以使用像Pex这样的自动化工具来告诉您应用于此方法的单元测试.如果此方法根据您的调用方式抛出异常,它还会在编译时为您提供反馈.喜欢
String text = null;
String reversedString = Reverse(text);
Run Code Online (Sandbox Code Playgroud)
编译器会警告您这将引发异常.
注意Code Contracts需要安装加载项,但它是免费的.