ArgumentException是否适用于模型中的属性?

时间:2015-04-10 12:39:25

标签: c# .net exception argumentexception

检查作为string传递的参数时,您会抛出ArgumentException

void CheckName(string name)
{
    if (name != "Alice")
    {
        throw new ArgumentException("Name is not Alice.");
    }
}

但是,在将模型(对象)传递给函数时,检查模型的属性并想要抛出异常。哪个例外是正确的抛出?还是ArgumentException吗?

void CheckUser(UserModel model)
{
    if (model.Name != "Alice")
    {
        throw new ArgumentException("Name is not Alice."); // ?
    }
}

我应该在例外中包含paramName参数吗? paramName应该是Name还是Model.Name

1 个答案:

答案 0 :(得分:2)

  

√如果参数不正确,请抛出ArgumentException或其子类型之一   传递给成员。如果是,则首选最派生的异常类型   适用。

     

√在抛出其中一个子类时设置ParamName属性   的ArgumentException。

     

此属性表示导致该参数的参数的名称   被抛出的异常。请注意,可以使用以下方法之一设置属性   构造函数重载。

取自Framework Design Guidelines

是的,你可以在这种情况下抛出ArgumentExceptionmodel参数)。但似乎它与您的业务逻辑相关联,所以我更愿意创建自定义的删除,例如InvalidUserException("This user is not allowed to do it.")或类似的东西。