例外(尝试和捕捉?)

时间:2013-11-08 08:06:04

标签: c#

我想将变量anzahlMinen的值限制为0到24之间的数字。

我该怎么做? 我知道例外,但我做错了。

static void Main(string[] args)
    {
      Console.WindowHeight = 23;
      Console.WriteLine("Mit wievielen Bomben möchten Sie spielen?");
      int anzahlMinen = int.Parse(Console.ReadLine());

2 个答案:

答案 0 :(得分:3)

您不需要例外处理:

string eingabe = Console.ReadLine();
int anzahlMinen = 0;
if (!Int32.TryParse(eingabe, out anzahlMinen))
    Console.WriteLine("Dies ist keine gültige Zahl!");
else if (anzahlMinen < 0 || anzahlMinen > 24)
    Console.WriteLine("Anzahl Minen muss zwischen 0 und 24 liegen!");

为什么你不需要/不要在这里使用例外:

异常用于指示程序流中的意外状态或错误。输入非数字或无效值的用户不是意料之外的,应该进行处理。

此外,创建和捕获异常会对应用程序的性能产生巨大影响,因此应避免不必要地抛出异常。

第三,异常表示错误,不应该永远用作控制程序流的手段!

答案 1 :(得分:1)

您可以使用TryParse来处理非数字值并将其解析为int,然后检查数字是否在0到24之间并在if

中处理错误的数字
int i=0;

var isNumber = int.TryParse(eingabe,out i);

if(!isNumber || (i<0 || i>24))
{
   Console.WriteLine("Wrong Number");
   //break or whatever
   //possibly use continue; to go back to first line of while
   continue;
}

不要在这里抛出异常,因为如果你可以处理异常情况而不抛弃和捕获,你不应该使用try / catch。尝试捕获是一种昂贵的机制,在这种简单的情况下是一种过度杀伤。