Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Разработка Windows Forms > Обработка исключений |
Автор: PashaSem 2.2.2007, 12:52 | ||
Все Привет! Есть ввод значения в int Unit_Number = Int32.Parse(Adr_drives.Text); и его обработка .
Все работает пока не вводим число 5000000000 в Steps_Num.Text); Как избежать данной ситуации Спасибо! |
Автор: Дрон 2.2.2007, 14:02 |
А что происходит? Программа говорит: "Всё! Больше работать не буду!" ![]() Но я, наверно, сейчас угадаю... Возникает unhandled exception (необработанное исключение) и программа сваливается в отладчик? Теперь... Если чуть-чуть, буквально самую малость, призадуматься и попытаться понять, что же стоит за словами необработанное исключение, то мы придём к выводу, что его на самом деле нужно обработать! Гениально, не правда ли? Но ведь у нас же уже есть блок catch, возразит автор. Есть-то он есть, но только откуда бедному автору (ведь у него нет MSDN) знать, какие именно исключения могут произойти в методе Int32.Parse... Подскажу. Там может возникнуть ещё и OverflowException, когда полученное число выходит за диапазон Int32... И ведь надо же такому случиться, что 5000000000 действительно вне этого диапазона. Чёрт. Кто бы мог подумать. Особенно если учесть, что сам отладчик должен сказать, что произошло OverflowException. Мистика, не правда ли? |
Автор: -Mikle- 2.2.2007, 14:07 |
Тип int может содержать значения от -2 147 483 647 до 2 147 483 648 Есть тип uint содержащий значения от 0 до 4 294 967 296 В твоем случае 5 миллиардов, что выходит за границы типа. Используй тип long или ulong , чтобы сохранить такие цифры. long от -9 223 372 036 854 775 807 до 9 223 372 036 854 775 808 ulong от 0 до 18 446 744 073 709 551 616 такого диапазона хватит тебе хватит точно! ![]() |
Автор: PashaSem 2.2.2007, 15:57 |
Спасибо За Столь Поучительный Урок! Я понял! Вопрос Буду ставить более точно. То что нет возможности преобразовать в Int32 это понятно по сообщению. НО дальнейшая работа с полученной величиной должна проволиться именно с Int32. преобразование типов не гарантирует что пользователь не нажмет клавишу и не будет держать ее до упора! Как вариант Возможно просто ограничить количество вводимых знаков ? Спасибо! |
Автор: -Mikle- 2.2.2007, 16:48 |
мда... вот что значит не правильная постановка вопросов!!! ![]() |