【发布时间】:2017-07-18 05:09:14
【问题描述】:
我了解下面的 GetInfo1 方法提供了更好的可读性。但是以下两种方法之间是否还有其他区别(例如运行时执行),即与方法结束相比,在方法开始时立即抛出异常?
public string GetInfo1(string name) {
if(string.IsNullOrWhiteSpace(name))
throw new ArgumentException(nameof(name));
var info = GetInfoByName(name);
return info;
}
public string GetInfo2(string name) {
if(!string.IsNullOrWhiteSpace(name)) {
var info = GetInfoByName(name);
return info;
}
throw new ArgumentException(nameof(name));
}
【问题讨论】:
-
请注意,为非空参数抛出
ArgumentNullException是一种非常糟糕的形式。如果我打电话给GetInfo1(""),我可能会期待ArgumentException,但不会期待ArgumentNullException。 -
同意@JonSkeet,但添加了伪代码只是好奇地发现了差异。我会更新它。谢谢
标签: c# validation exception methods arguments