Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ArgumentException对模型中的属性是否正确?_C#_.net_Exception_Argumentexception - Fatal编程技术网

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应该与原始参数一起工作。