5

我试图在有人在提示输入年龄时尝试输入非整数字符的情况下引发格式异常。

        Console.WriteLine("Your age:");
        age = Int32.Parse(Console.ReadLine());

我不熟悉 C# 语言,可以使用帮助来为此实例编写 try catch 块。

非常感谢。

4

4 回答 4

24

该代码将已经抛出一个FormatException. 如果你的意思是你想抓住它,你可以写:

Console.WriteLine("Your age:");
string line = Console.ReadLine();
try
{
    age = Int32.Parse(line);
}
catch (FormatException)
{
    Console.WriteLine("{0} is not an integer", line);
    // Return? Loop round? Whatever.
}

但是,最好使用int.TryParse

Console.WriteLine("Your age:");
string line = Console.ReadLine();
if (!int.TryParse(line, out age))
{
    Console.WriteLine("{0} is not an integer", line);
    // Whatever
}

这避免了相当普通的用户错误情况的异常。

于 2012-09-23T06:22:48.807 回答
3

那这个呢:

Console.WriteLine("Your age:");
try
{    
     age = Int32.Parse(Console.ReadLine());
}
catch(FormatException e)
{
    MessageBox.Show("You have entered non-numeric characters");
   //Console.WriteLine("You have entered non-numeric characters");
}
于 2012-09-23T06:25:48.227 回答
0

无需为该代码设置 try catch 块:

Console.WriteLine("Your age:");
int age;
if (!Integer.TryParse(Console.ReadLine(), out age))
{
    throw new FormatException();
}
于 2012-09-23T06:22:39.137 回答
-1

你可以这样做...

int age;

Console.WriteLine("你的年龄:"); 年龄=Conver.ToInt32(Console.Readline());

//@Erfunll

于 2021-09-16T16:28:42.810 回答