我的例外处理无效

时间:2017-07-13 11:06:01

标签: c#

当用户输入字符串时,程序会中断并且我的异常处理不会解决此问题。我做错了什么?

int number;

Console.WriteLine("Please enter your age");

number = Convert.ToInt32(Console.ReadLine());

try
{
    if (number >= 18)
     Console.WriteLine("You are old enough to enter");
    else if (number < 18)
     Console.WriteLine("You are not old enough to enter");
}
catch
{
    Console.WriteLine("Only enter a number");
}

Console.ReadLine();

3 个答案:

答案 0 :(得分:2)

你必须把

number = Convert.ToInt32(Console.ReadLine()); 

在Try / Catch里面。您正在读取字符串并尝试将其转换为int。如果不可能,Convert.ToInt32将抛出异常。

    try
    {
        number = Convert.ToInt32(Console.ReadLine());

        if (number >= 18)
            Console.WriteLine("You are old enough to enter");
        else if (number < 18)
            Console.WriteLine("You are not old enough to enter");
    }
    catch
    {
        Console.WriteLine("Only enter a number");
    }

    Console.ReadLine();

另外,建议您使用int.TryParse()。在这种情况下,您可以检查结果而不会发现异常。

答案 1 :(得分:0)

您必须编辑代码才能将try .. catch放在正确的位置,然后放置以下行:

number = Convert.ToInt32(Console.ReadLine());

try .. catch块,这就是为什么不处理异常的原因,请检查以下代码:

{
      try
      {
        int number;


        Console.WriteLine("Please enter your age");
        number = Convert.ToInt32(Console.ReadLine());
        if (number >= 18)
        {
          Console.WriteLine("You are old enough to enter");
        }
        else if(number < 18)
        {
          Console.WriteLine("You are not old enough to enter");
        }
        catch
        {
            Console.WriteLine("Only enter a number");

        }

        Console.ReadLine();
}

有关 try..catch HERE的更多信息。

答案 2 :(得分:0)

number = Convert.ToInt32(Console.ReadLine());

try

中添加此内容