尝试让程序在输入非数字时处理错误异常

时间:2017-10-27 18:43:05

标签: c#

此代码当前处理数字的输入,无论是更大还是更小,或者在可接受的范围内,但是,如果输入的任何数字都是非处理的异常,则程序崩溃错误.System.FormatException:'输入字符串格式不正确。“如果这有用的话,这就是错误。

using System;

class Program
{


    static void PrintHello(int NumberOfTimes)
    {
        if (NumberOfTimes > 1 && NumberOfTimes < 11)

        {
            for (int Counter = 0; Counter < NumberOfTimes; Counter++)
            {
                Console.WriteLine("Hello.");
            }
        }
        else { Console.WriteLine("Error, please enter a number between 1 and 10"); }

    }

    static void Main(string[] args)
    {
        int myNumber = 1;
        while (myNumber != 0)
        {
            Console.WriteLine("Enter a number between 1 and 10, or 0 to stop");
            myNumber = Convert.ToInt16(Console.ReadLine());
            PrintHello(myNumber);
        }

    }
}

2 个答案:

答案 0 :(得分:3)

只需将Convert.ToInt16(...)替换为以下内容:

var input = Console.ReadLine();
if (int.TryParse(input, out myNumber))
{
     PrintHello(myNumber);
}

如果给定的输入可以解析为整数,则int.TryParse - 方法将返回true,否则返回false。如果它可以解析输入,则该值将存储在第二个参数中(标记为out

编辑: 根据经验:永远不要直接解析用户输入(特别是当您使用字符串作为输入处理时)。检查输入是否有效。

答案 1 :(得分:-1)

解析输入字符串时可以使用try和catch,如下所示:

try
{
  int NumberOfTimes = int.Parse(Console.ReadLine());
}
catch(System.FormatException)
{
  Console.WriteLine("Incorrect format of the user's input");
}