0

当最终用户键入无效格式或离开字段而未输入任何数据时,我想捕获异常。我将字符串类型用于名字和姓氏。这是问题,因为字符串类型同时接受字符串类型数据和数字数据捕获块无法捕获无效数据输入的异常。此外,由于字符串类型默认值为 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");
        }

     }
4

3 回答 3

1

你真的不需要 try-catch 块。由于您已捕获本地变量中的字段,因此您可以对它们执行验证。

if (String.IsNullOrEmpty(fName)) {
  // handle empty string input
}

if (ContainsNumbers(fName)) {
  // handle invalid input
}

private bool ContainsNumbers(string str) {
  ...
}
于 2013-05-17T00:48:28.650 回答
0

"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.
}
于 2013-05-17T00:49:07.033 回答
0

您需要手动验证条目,然后抛出异常。

但是......你真的不应该使用异常进行数据验证,当发生意想不到的事情时使用异常......比如网络错误,数据库错误等......

对于数据验证,一个简单的 IF 语句就足够了。

希望能帮助到你。

于 2013-05-17T00:50:16.243 回答