Каковы способы профилактики и лечения арифметического переполнения в C #?

1

Какие способы предотвращения и лечения арифметического переполнения в С#?

А Преобразование арифметического переполнения (логическая ошибка) в ошибку времени выполнения?

Я хочу как минимум 3 способа решить эту проблему!

Теги:

1 ответ

3
Лучший ответ

Вы можете использовать checked.

int z = 0;
    try
    {
        // The following line raises an exception because it is checked.
        z = checked(maxIntValue + 10);
    }
    catch (System.OverflowException e)
    {
        // The following line displays information about the error.
        Console.WriteLine("CHECKED and CAUGHT:  " + e.ToString());
    }
    // The value of z is still 0. 
    return z;

см. пример и пояснения по адресу http://msdn.microsoft.com/en-us/library/74b4xzyw.aspx

Больше способов сделать это по запросу OP:

Вы также можете использовать Int32.MaxValue (для арифметики int), чтобы проверить, может ли операция вызвать переполнение, либо либо выбросить свое собственное исключение, либо System.OverflowException

Что-то вроде if ((Int32.MaxValue - x) < y) throw new Exception()

  • 1
    Я действительно желаю, чтобы checked получил больше словесного обслуживания. Это феноменальная особенность.
  • 0
    Мне нужно больше способов. проверено полезно, но этого недостаточно.
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню