如何捕获无效数据条目的异常

本文关键字:异常 数据 何捕获 无效 | 更新日期: 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语句就足够了。

希望能有所帮助。