|
17 / 17 / 1
Регистрация: 30.09.2009
Сообщений: 89
|
||||||
Обработка исключений при вводе некорректных данных23.05.2011, 02:06. Показов 31102. Ответов 12
Метки нет (Все метки)
День добрый, начал разбираться с исключениями, пока не совсем понимаю в чем их удобство и зачем они нужны, какие преимущества и т.д... но вопрос, вобще-то, не в этом. Возможно ли применить обработку исключительной ситуации в случае некорректного (в плане типа) вводимых данных?
Пример - есть переменная int a; я считываю в нее значение: cin >> a; и ввожу вместо числа, скажем, букву. программа, естественно, вылетает. возможно ли при помощи исключений ухватить эту ошибку и не допустить падения программы? и возможно ли улавливать всякие непредвиденные ошибки, где я не использовал throw? Добавлено через 1 час 14 минут Вобщем вот такая вот идиотская защита от ввода не числовых значений при считывании в переменную int:
0
|
||||||
| 23.05.2011, 02:06 | |
|
Ответы с готовыми решениями:
12
Обработку исключений при вводе некорректных данных Программа зацикливается при вводе некорректных данных Зацикливание программы при вводе некорректных данных |
|
770 / 760 / 59
Регистрация: 06.07.2009
Сообщений: 3,021
|
|
| 23.05.2011, 06:10 | |
|
throw удобно, как мне кажется, только тем что передает управление сразу в catch выходя сразу из всех циклов программы.
Вообще наиболее часто throw используется что бы передать ошибку например из библиотеки и основную программу, встречал такое. Отлавливать исключения нужно так как какая либо библиотека, которую ты используешь, может запросто тебе его прислать. Если исключения не отлавливать, итогом возникновения ошибок, могут стать крахи программы, которые ты мог предотвратить. Однако во-первых тут двоякая ситуация, так как после некоторых ошибок программа может неправильно функционировать, хотя отлов исключения дает возможность тебе выдать для пользователя не какую то непонятную табличку на английском, а что либо удобочитаемое для него. Во-вторых исключений есть два типа, и отлавливать ты можешь только один из них. В любом случае, тема не сказал бы что маленькая, рекомендую почитать статьи по исключениям, в сети их довольно много.
1
|
|
|
187 / 174 / 18
Регистрация: 22.03.2010
Сообщений: 612
|
|||||||||||
| 23.05.2011, 07:33 | |||||||||||
countBuf[0] = '5' countBuf[1] = 'a' if будет пройден успешно(на первой итерации), throw не сработает, сработает atoi которой вернёт тебе, судя из cplusplus.com, zero. Ошибки вроде бы не будет в результате, но мне кажется это работает не так, как ты задумывал Помоему надо вынести строку
И ещё я думаю, что в такой програмулине не стоит нагромождать try и catch. Их преимущество в том, что ты в одном участке кода выбрасываешь исключение, например в собственном классе, а в самой программе или другом классе обрабатываешь?
1
|
|||||||||||
|
17 / 17 / 1
Регистрация: 30.09.2009
Сообщений: 89
|
|||
| 23.05.2011, 09:39 [ТС] | |||
![]() так мне никто и не ответил =) как же все-таки сделаеть красивую проверку на корректность вводимых данных? как не допустить вылета при вводе, скажем, символов в интовую переменную?
0
|
|||
|
187 / 174 / 18
Регистрация: 22.03.2010
Сообщений: 612
|
||||||||||||
| 23.05.2011, 14:11 | ||||||||||||
|
покажи весь листинг, не видно где у тебя блок try
если это какая-то функция, допустим она называется fuck() для определённости,
Добавлено через 45 минут и в качестве альтернативы твоему коду могу предложить такой вариант
1
|
||||||||||||
|
17 / 17 / 1
Регистрация: 30.09.2009
Сообщений: 89
|
|||||||
| 23.05.2011, 18:20 [ТС] | |||||||
|
а полный листинг программы ниже, сегодня успешно сдал лабу, хотя сам кодом недоволен, ничерта не понял как правильно пользоваться исключениями. выслушал бы критику и советы как по всему коду вцелом, так и в особенности по части исключений ![]()
0
|
|||||||
|
187 / 174 / 18
Регистрация: 22.03.2010
Сообщений: 612
|
|
| 23.05.2011, 18:35 | |
|
1
|
|
|
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
|
|
| 23.05.2011, 18:37 | |
|
(Не смотрел по части исключений) а зачем глобальные переменные?
1
|
|
|
187 / 174 / 18
Регистрация: 22.03.2010
Сообщений: 612
|
||
| 23.05.2011, 18:38 | ||
|
1
|
||
|
17 / 17 / 1
Регистрация: 30.09.2009
Сообщений: 89
|
||||
| 23.05.2011, 19:38 [ТС] | ||||
|
Добавлено через 1 минуту Добавлено через 18 минут
0
|
||||
|
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
|
|||
| 24.05.2011, 02:10 | |||
|
Добавлено через 1 минуту
1
|
|||
|
17 / 17 / 1
Регистрация: 30.09.2009
Сообщений: 89
|
|
| 24.05.2011, 03:12 [ТС] | |
|
Спасибо огромное за советы, сейчас попробую
0
|
|
|
187 / 174 / 18
Регистрация: 22.03.2010
Сообщений: 612
|
||||||
| 24.05.2011, 05:35 | ||||||
|
ну и раз у тебя вся обработка исключений состоит в том, что выводится строчка, я бы на твоём месте передавал исключение типа string, тогда обработку можно было сократить до
0
|
||||||
| 24.05.2011, 05:35 | |
|
Помогаю со студенческими работами здесь
13
Обработка исключений при наследовании Обработка исключений при работе с файлами Обработка исключений с пмощью структурированной обработки исключений Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Символьное дифференцирование
igorrr37 13.02.2026
/ *
Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет
значение производной при заданном х
Логарифм записывается как: (x-2)log(x^2+2) -. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
|