C# 如何捕获无效数据项的异常?

C# 如何捕获无效数据项的异常?,c#,visual-c#-express-2010,C#,Visual C# Express 2010,我希望捕获最终用户键入无效格式或未输入任何数据就离开字段时的异常。我使用字符串类型作为名字和姓氏。这是一个问题,因为字符串类型同时接受字符串类型数据和数字数据。捕获块无法捕获无效数据输入的异常。同样,由于字符串类型默认值为null,当字段留空时无法捕获异常 例如,当用户在fname字段中键入123或离开该字段而不输入数据时,我希望捕获异常 static void Main(string[] args) { string fName = null;

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

     }

你真的不需要一个试接块。因为您已经捕获了本地变量中的字段,所以可以对它们执行验证

if(String.IsNullOrEmpty(fName)){
//处理空字符串输入
}
if(包含成员(fName)){
//处理无效输入
}
私有布尔包含成员(字符串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语句就足够了


希望有帮助。

要捕获异常,您需要抛出一个异常
Console.ReadLine()
将毫无怨言地接受用户向其抛出的任何东西。。就我所知我认为,您正在寻找数据验证,而例外情况并不十分适合这种情况。查一下!:)不幸的是,我不能同意。异常是一种错误情况,而不仅仅是意外的错误情况。您真正应该说的是,我也同意您的看法,您不应该将异常用于流控制。因此,在编写可能有效或可能无效的内容(在本例中为验证)时,不应使用异常来表示输入的数据未通过验证。简单地说,这不是程序错误。感谢您的输入。对不起,我指的是数字123,不是字符串。我继承了System.Text.RegularExpressions来使用Regex类,但得到了错误。有什么线索吗??