如何捕获无效数据条目的异常
本文关键字:异常 数据 何捕获 无效 | 更新日期: 2023-09-27 18:14:06
当最终用户键入无效格式或未输入任何数据就离开字段时,我想捕获异常。我使用字符串类型的名字和姓氏。这里有一个问题,因为字符串类型接受字符串类型数据和数字数据,捕获块无法捕获无效数据条目的异常。另外,由于字符串类型默认值为null,因此当字段为空时无法捕获异常。
例如,当用户在fname字段中输入123或离开字段而未输入数据时,我想捕获异常。
static void Main(string[] args)
{
string fName = null;
string lName = null;
try
{
Console.Write("Enter your first Name ");
fName = Console.ReadLine();
Console.Write("Enter your Last Name ");
lName = Console.ReadLine();
}
catch (Exception e)
{
Console.WriteLine(e.Message);
Console.WriteLine("Please enter correct format");
}
}
实际上并不需要try-catch块。既然您已经捕获了本地变量中的字段,那么您就可以对它们执行验证了。
if (String.IsNullOrEmpty(fName)) {
// handle empty string input
}
if (ContainsNumbers(fName)) {
// handle invalid input
}
private bool ContainsNumbers(string str) {
...
}
"123"
和"abc"
一样都是有效的字符串。您要做的是检查用户输入的内容是否只包含单词字符。你可以这样做:
Regex regex = new Regex("('w+)");
fname = Console.ReadLine();
if (!regex.Match(fname).Success)
{
// throw exception here, as the entered value did not contain word characters.
}
您需要手动验证条目,然后抛出异常。
但是…你真的不应该使用异常的数据验证,一个异常是使用当一些意想不到的事情发生....如网络错误,数据库错误等…
对于数据验证,一个简单的IF语句就足够了。
希望能有所帮助。