C# ArgumentException对模型中的属性是否正确?
当检查作为C# ArgumentException对模型中的属性是否正确?,c#,.net,exception,argumentexception,C#,.net,Exception,Argumentexception,当检查作为字符串传递的参数时,您将抛出参数异常 void CheckName(string name) { if (name != "Alice") { throw new ArgumentException("Name is not Alice."); } } 但是,将模型(对象)传递给函数时,检查模型的属性并希望引发异常。哪个异常是要抛出的正确异常?是否仍然是异常 void CheckUser(UserModel model) { if (m
字符串传递的参数时,您将抛出参数异常
void CheckName(string name)
{
if (name != "Alice")
{
throw new ArgumentException("Name is not Alice.");
}
}
但是,将模型(对象)传递给函数时,检查模型的属性并希望引发异常。哪个异常是要抛出的正确异常?是否仍然是异常
void CheckUser(UserModel model)
{
if (model.Name != "Alice")
{
throw new ArgumentException("Name is not Alice."); // ?
}
}
我应该在异常中包含paramName
参数吗?
paramName
应该是Name
还是Model.Name
√ 如果参数错误,请抛出ArgumentException或其子类型之一
传递给成员。如果需要,请首选派生最多的异常类型
适用
√ 在抛出
例外
此属性表示导致错误的参数的名称
要抛出的异常。请注意,可以使用以下方法之一设置属性:
构造函数重载
摘自
是的,在这种情况下可以抛出ArgumentException
(使用model
参数)。但它似乎与您的业务逻辑有关,因此我更喜欢创建自定义例外,例如InvalidUserException(“该用户不允许这样做”)
或类似的东西。IMO我会使用新的ArgumentException(“UserModel.Name不是Alice”,“model”)代码>框架设计指南似乎没有提到当它是一个模型而不是一个原始参数时要采取的适当措施。它模糊地提到了“member”,这就是为什么我建议创建一个自定义异常。我相信ArgumentException应该与原始参数一起工作。