在try catch中检查可能的异常与包装代码

时间:2016-02-15 18:50:41

标签: c# .net visual-studio try-catch throw

我在我的方法中检查无效条件:

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
}

代码看起来很尴尬。是否有更强的标准方法来实现验证没有无效条件的逻辑?

1 个答案:

答案 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;
}

这样,在数据验证错误的情况下,您将获得所有可能的错误,而不仅仅是第一个错误。