Как проверить, что я> 0 с try ... catch? - PullRequest
0 голосов
/ 07 сентября 2011

Я хочу проверить, что переменная (например, "totalSum" больше 0) с try catch, и если это не так Я хочу, чтобы программа отменила и написала сообщение пользователю.

Следующий код по очевидным причинам не может быть скомпилирован, но, надеюсь, вы увидите, что я хочу с ним:

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

Можно ли сделать это с помощью try ... catch и, если да, то как это сделать?

Ответы [ 5 ]

4 голосов
/ 07 сентября 2011
Блок

A 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);
}
3 голосов
/ 07 сентября 2011

Вы можете сделать это, хотя я не рекомендую это:

try
{
  if (totalSum < 0)
    throw new ArgumentOutOfRangeException("totalSum", "Total sum is too small.");
}
catch (ArgumentOutOfRangeException ex)
{
   Console.WriteLine(ex.Message);
}
2 голосов
/ 07 сентября 2011

вы можете выбросить исключение

if (totalSum < 0)
{
    throw new InvalidArgumentException("totalSum");
}
1 голос
/ 07 сентября 2011

Нет смысла использовать блок try/catch здесь. Используйте исключения только для только в исключительных случаях . В вашем случае просто используйте if и else:

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!");
}
1 голос
/ 07 сентября 2011

Нет особых оснований использовать try catch.

Вы можете сделать

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

Но на самом деле, нет причин делать это - зачем вам использовать try..catch

...