Необработанное исключение типа “System.OverflowException” в mscorlib.dll

207
24 мая 2017, 03:32
void BuildDiagram()
{
    chartRating.Series[0].Points.Clear();
    foreach (DataRow r in ClientsTable.Rows)
        if (Convert.ToInt16(r[3]) != 0)
            chartRating.Series[0].Points.AddXY(r[1], r[3]);
}
Answer 1

Convert.ToInt16 выбрасывает OverflowException если переданное значение не укладывается в диапазон Int16, т.е. от -32768 до 32767.

Варианты решения проблемы:

  • использовать более емкий тип, например Int32, Int64, или Decimal;
if(Convert.ToDecimal(r[3])!=0)
  • проверить какой реально тип у r[3] и привести к нему.

Если после этого зачем-то потребуется привести к Int16, то нужно учесть границы диапазона, либо привести между числовыми типами с переполнением:

int value = Convert.ToInt32(r[3]);
short shortValue = (short) value;
Answer 2

"Исключение, которое выдается, если выполнение арифметической операции, операции приведения к типу или преобразования в проверяемом контексте приводит к переполнению." На Msdn

Convert.ToInt16(r[3]) - ошибка скорее всего тут.

Если r[3] является объектом, который имеет тип Int32, то можете использовать следующий метод явного преобразования: (Int16)r[3].

В настройках проекта на вкладке Build жмём кнопку Advanced и снимаем галочку Check for arithmetic overflow, тогда ошибки переполнения не возникнет.

Важно понимать, что при таком переполнении в этом примере (Int16)r[3] вы получите неожиданный результат.

Если r[3] является строкой, то попробуйте воспользоваться конструкцией: try {} catch {}

READ ALSO
Проблема в обработчике формы с Recaptcha

Проблема в обработчике формы с Recaptcha

У меня на локалке форма с капчей срабатывает На локалке, а на сервере пишет ОшибкаСообщение не отправлено!

276
Unable to register extension “*” as extensions have already been initialized

Unable to register extension “*” as extensions have already been initialized

При загрузке Extension в Twig, происходит ошибка Unable to register extension "SectionParser" as extensions have already been initialized

394
Как сделать в yii2 консольное обращение

Как сделать в yii2 консольное обращение

Как сделать в Yii2 консольное обращение? Господа прошу подсказать

284
Не работает запрос mysql

Не работает запрос mysql

Не работает этот запросВ phpmyadmin сам запрос дает результат, таблица обновляется, но когда я запускаю php-скрипт работать не хочет

305