C#Try and Catch错误消息

时间:2017-04-04 21:18:05

标签: c# while-loop try-catch

我最近开始使用c#进行编码,但是我遇到了一个问题,我现在已经尝试解决了几个小时,所以我想我会放手一搏。这基本上是一个简单的程序,用户可以猜测1-20之间的数字,计算机会告诉你数字是太小还是太大或者数字是否正确。

除了try和catch部分之外,一切正常。我希望用户每次输入字符串而不是数字时都会收到错误消息。我尝试了不同的解决方案,但我无法解决我必须放入try块的问题。正如我所说,当我不使用try和catch时,程序运行正常,但是当我使用它时,每次都会出现错误消息,所以请帮助我并告诉我在试用部分中我要写的内容码。

这是代码:

using System;

namespace Uppgift_4
{
    class Program
    {
        static void Main(string[] args)
        {
            Random slumpat = new Random();
            int speltal = slumpat.Next(1,20); 

            bool spela = true; 
            while (spela)
            {
            Console.Write("\n\tGissa på ett tal mellan 1 och 20: ");
            int tal;
            Int32.TryParse(Console.ReadLine(), out tal);

            try
            {

            }
            catch
            {
                Console.WriteLine("Fel, du får bara skriva in nummer");
            }


            if (tal < speltal)
            {
                Console.WriteLine("\tDet inmatade talet " + tal + " är för litet, försök igen.");
            }

            else if (tal > speltal)
            {
                Console.WriteLine("\tDet inmatade talet " + tal + " är för stort, försök igen.");
            }

            else
            {
                Console.WriteLine("\tGrattis, du gissade rätt!");
                spela = false;
            }

        }
    }
}

}

1 个答案:

答案 0 :(得分:2)

当你使用Int32.TryParse时,如果给定的字符串不能被解析为整数,则不会抛出任何异常。此方法将返回false。你应该检查一下:

Console.Write("\n\tGissa på ett tal mellan 1 och 20: ");
int tal;
if(!Int32.TryParse(Console.ReadLine(), out tal))
{
    Console.WriteLine("Fel, du får bara skriva in nummer");
    continue;
}

当您使用Int32.Parse时,如果无法解析字符串,则会抛出异常:

Console.Write("\n\tGissa på ett tal mellan 1 och 20: ");
int tal;
try
{
   tal = Int32.Parse(Console.ReadLine());
}
catch
{
    Console.WriteLine("Fel, du får bara skriva in nummer");
    continue;
}