检查作为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
?
答案 0 :(得分:2)
√如果参数不正确,请抛出ArgumentException或其子类型之一 传递给成员。如果是,则首选最派生的异常类型 适用。
√在抛出其中一个子类时设置ParamName属性 的ArgumentException。
此属性表示导致该参数的参数的名称 被抛出的异常。请注意,可以使用以下方法之一设置属性 构造函数重载。
取自Framework Design Guidelines。
是的,你可以在这种情况下抛出ArgumentException
(model
参数)。但似乎它与您的业务逻辑相关联,所以我更愿意创建自定义的删除,例如InvalidUserException("This user is not allowed to do it.")
或类似的东西。