如何检查它>0与尝试…抓住

本文关键字:抓住 何检查 检查 | 更新日期: 2023-09-27 18:07:40

我想检查一个变量(例如"totalSum"大于0)与try catch,如果不是我想让程序取消并给用户写一条消息。

下面的代码显然是无法编译的,但希望你能看到我想要的:

while (true)
{
    try
    {
        totalSum > 0;
        break;
    }
    catch
    {
        Console.WriteLine("Total sum is too small.");
        End program
    }
}

是否有可能用try…如果有,该怎么做?

如何检查它>0与尝试…抓住

一个try/catch块可以这样做:

try
{
    if (totalSum < 0)
        throw new ApplicationException();
}
catch (Exception ex)
{
    Console.WriteLine("Total sum is too small");
    Environment.Exit(1);
}

但是一个简单的if语句可以用更少的工作完成这个任务:

if (totalSum < 0)
{
    Console.WriteLine("Total sum is too small");
    Environment.Exit(1);
}

您可以这样做,但我不建议这样做:

try
{
  if (totalSum < 0)
    throw new ArgumentOutOfRangeException("totalSum", "Total sum is too small.");
}
catch (ArgumentOutOfRangeException ex)
{
   Console.WriteLine(ex.Message);
}

你可以抛出一个异常

if (totalSum < 0)
{
    throw new InvalidArgumentException("totalSum");
}

没有太多理由使用try catch。

你可以做

try {
    if(!(totalSum > 0)) throw new Exception();
} catch {
    Console.WriteLine("Total sum is too small.");
}

但是,真的,没有理由这样做-为什么你必须使用try..catch?

没有理由在这里使用try/catch块。仅在异常情况下使用异常。在您的情况下,只使用ifelse:

if (totalSum > 0)
{
    // Good! Do something here
}
else
{
    // Bad! Tell the user
    Console.WriteLine("Bad user!");
}

或者,如果你想循环:

int totalSum = 0;
while (totalSum <= 0)
{
    totalSum = GetSum();
    if (totalSum <= 0)
        Console.WriteLine("Too small!");
}