使用try / catch根据输入显示错误

时间:2014-11-04 12:34:08

标签: c# arrays try-catch

我有一个相当基本的作业,涉及使用try/catch根据输入的数字(使用数组)显示多个名称。如果输入的数字太大,它仍然可能显示名称,但也必须给出一个越界错误。如果使用单词或类似的东西,则需要提供格式错误。

到目前为止,我的代码工作得相当好,因为它可以显示一个越界错误,但是当我输入一个单词时,我没有得到格式错误。

我还想知道如果数字低于5(如果只接受5),是否有可能导致错误发生。

这是我的代码:

class Program
{
    static void Main(string[] args)
    {
        string[] names = new string[5] { "Merry", "John", "Tim", "Matt", "Jeff" };
            string read = Console.ReadLine();
            int appel;

        try
        {   
            int.TryParse(read, out appel);
            for (int a = 0; a < appel; a++)
            {
                Console.WriteLine(names[a]);
            }


        }



        catch(FormatException e)
        {
            Console.WriteLine("This is a format error: {0}", e.Message);
        }
        catch (OverflowException e)
        {
            Console.WriteLine("{0}, is outside the range of 5. Error message: {1}", e.Message);
        }
        catch (Exception e)
        {
            Console.WriteLine("out of range error. error message: {0}", e.Message);
        }
        Console.ReadLine();
    }
}

2 个答案:

答案 0 :(得分:1)

int.TryParse(read, out appel);

此代码不会抛出任何异常,这将返回True(如果解析成功则返回false)。 如果您打算抛出异常,请使用:int.Parse

答案 1 :(得分:0)

        bool b = int.TryParse(read, out appel);
        if(!b)
           throw new FormatException("{0} is not a valid argument", read);

        int.Parse(read, out appel);

只要输入错误的值,就会抛出一个形式感知。