我希望在最终用户输入无效格式时留下异常,或者在不输入任何数据的情况下离开该字段。我使用字符串类型作为第一个名称和姓氏。这是问题,因为字符串类型接受字符串类型数据和数字数据catch块无法捕获无效数据输入的异常。因为字符串类型的默认值为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");
}
}
答案 0 :(得分:1)
你真的不需要try-catch块。由于您已捕获局部变量中的字段,因此您可以对它们执行验证。
if (String.IsNullOrEmpty(fName)) {
// handle empty string input
}
if (ContainsNumbers(fName)) {
// handle invalid input
}
private bool ContainsNumbers(string str) {
...
}
答案 1 :(得分: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.
}
答案 2 :(得分:0)
您需要手动验证条目,然后抛出异常。
但是......你真的不应该使用Exceptions进行数据验证,当出现不期望的事情时会使用Exception ....比如网络错误,db错误等......
对于数据验证,一个简单的IF语句就足够了。
希望它有所帮助。