我需要知道如何以高效和智能的方式处理我的问题:
我想要用户输入的错误处理;我有两个字段CustomerID
和Company
:
if (customerIDExists)
{
errorMessage = "...";
}
if (companyInvalid)
{
errorMessage = "...";
}
else
{
// Add user to DB
}
可能有3个错误:
通过上面的示例,else是最后一个if(companyInvalid)。我怎样才能处理只有在1和2不匹配时才执行的其他操作?
否则,如果不对,因为我必须检查所有机会。
答案 0 :(得分:4)
嗯,你可以说得非常明确:
if (customerIDExists)
{
...
}
if (companyInvalid)
{
...
}
if (!customerIDExists && !companyInvalid)
{
// Add user to DB
}
或者只是使用您没有收到错误消息的事实:
string errorMessage = null;
if (customerIDExists)
{
errorMessage = ...;
}
if (companyInvalid)
{
errorMessage = ...; // Don't forget it could already be non-null!
}
if (errorMessage == null)
{
// No error message, so we must be fine
// Add user to DB
}
答案 1 :(得分:3)
如果我理解你的问题,如果customerIDExists为真,那么else会触发。
试试这个
if(customerIDExists)
{
errorMessage = "...";
}
else if(companyInvalid)
{
errorMessage = "...";
}
else
{
// Add user to DB
}
我已经添加了一个否则是第二个条件。现在你的应用程序将检查customerIDExists是否存在,如果不存在,它将检查companyInvalid如果不存在则会将用户添加到数据库中。
现在,如果这两个都不正确会发生什么?您只会向用户显示错误消息,当他们修复该问题并发现他们还有另一个您没有告诉他们的消息时,这会很烦人!我的建议是使用一个错误列表,如果没有任何保存到数据库:
var errors = new List<string>();
if(customerIDExists)
{
errors.Add("Customer exists");
}
if(companyInvalid)
{
errors.Add("Company invalid");
}
if(!errors.Any())
{
// Add user to DB
}
return errors;
答案 2 :(得分:0)
您可以使用变量:
bool isValid = true;
if(customerIDExists)
{
errorMessage = "...";
isValid = false;
}
if(companyInvalid)
{
errorMessage = "...";
isValid = false;
}
if(isValid)
{
// Add user to DB
}
答案 3 :(得分:0)
你可以尝试旧技术:
do {
if(customerIDExists)
{
errorMessage = "...";
break;
}
if(companyInvalid)
{
errorMessage = "...";
break;
}
// All is ok.
} while (false);
答案 4 :(得分:0)
如果您想显示所有消息并且在第一次出错后没有破坏证明,您可以使用以下内容:
List<string> errorMessages = new List<string>();
if (customerIDExists)
{
errorMessages.Add("...");
}
if (companyInvalid)
{
errorMessages.Add("...");
}
if (errorMessages.Count == 0) //Valid
{
}
else //Invalid
{
}
答案 5 :(得分:0)
我假设您要报告所有错误,而不仅仅是遇到的错误。
var errors = new List<string>();
if (customerIDExists)
{
errors.Add("customer id exists");
}
if (companyInvalid)
{
errors.Add("company is invalid");
}
if(errors.Any())
{
// display all error messages
}
else
{
// Add user to DB
}