我在我的方法中检查无效条件:
public void DoStuff()
{
int result;
if (DeviceSettings == null)
throw new NullReferenceException("Not initialized");
if (!Serial.IsNotEmpty())
throw new Exception("The serial number is empty.");
if (!int.TryParse(Serial, out result))
throw new ArgumentOutOfRangeException(Serial);
//do stuff
}
代码看起来很尴尬。是否有更强的标准方法来实现验证没有无效条件的逻辑?
答案 0 :(得分:1)
我喜欢将异常限制在真正的“特殊”情境中。对于上面的内容,我会从DoStuff()而不是void返回一个“响应”类型的数据结构,它可能包含验证错误列表。
class Response()
{
public List<string> errors {get;set;}
}
public Response DoStuff()
{
var response = new Response();
int result;
if (DeviceSettings == null)
response.errors.Add("Not Initialized");
if (!Serial.IsNotEmpty())
response.errors.Add("The serial number is empty.");
if (!int.TryParse(Serial, out result))
response.errors.Add("Argument out of range");
// check your response errors, return if necessary
//do stuff
return response;
}
这样,在数据验证错误的情况下,您将获得所有可能的错误,而不仅仅是第一个错误。