Если это ваш первый визит, рекомендуем почитать справку по форуму. Для размещения своих сообщений необходимо зарегистрироваться. Для просмотра сообщений выберите раздел. |
C++ вопросик |
Философия, технологии, алгоритмы! |
|
Опции темы |
26.10.2012, 22:25 | #1 |
Registered User
Сообщений: 1,114
Регистрация: 23.06.2007
Возраст: 56
Не в сети |
C++ вопросик
1. Правильно ли в консольном приложении для задержки экрана использовать system ("pause")?
2. Для того что-бы приложение обрабатывало исключительные ситуации вроде деления на ноль. Ставлю в Свойствах проекта у поля Code Generation (вкладка С++) свойство Enable C++ Exception -> Yes with Seh exception. Потом соответственно ловлю через Код:
try { for (i=15; i>-1;--i) { cout<<i<<endl; j/=i; } } catch(...) { cout<<"Division by 0"<<endl; } |
26.10.2012, 23:51 | #2 |
Форумец
Сообщений: 286
Регистрация: 17.09.2010
Не в сети |
Hopkroft, откройте что ли любую книжку по С++ (их навалом) - там и про обработку исключений есть...
|
27.10.2012, 00:07 | #3 | |
Registered User
Сообщений: 1,114
Регистрация: 23.06.2007
Возраст: 56
Не в сети |
Цитата:
Но не во всех книжках описаны тонкости работы с конкретной средой. Например в Липпмане, просто описан механизм, без привязки к конкретной среде. Поэтому и спросил, людей которые более детально разбирались. |
|
28.10.2012, 12:54 | #4 |
Форумец
Сообщений: 286
Регистрация: 17.09.2010
Не в сети |
Hopkroft, ну C++ знаю плоховато (начинал изучать, бросил от нехватки времени, может потом ещё вернусь). В той же java схема такая:
try { код, который может вызывать исключение код, который выполняется, если исключения нет (всё хорошо) } catch (Исключение1 e) { обработка ... } catch (ИсключениеN e { обработка } finally { что нужно вызывать ОБЯЗАТЕЛЬНО (закрыть открытые файлы, сокеты, подключения к БД и т.п.) } что конкретно непонятно? Думаю ,в плюсах всё если не в точности также, то очень похоже. |
28.10.2012, 16:20 | #5 |
highly mean
Сообщений: 1,128
Регистрация: 26.05.2011
Возраст: 35
Не в сети |
|
28.10.2012, 19:16 | #6 | |
Registered User
Сообщений: 1,114
Регистрация: 23.06.2007
Возраст: 56
Не в сети |
Цитата:
Как сделать так, что-бы исключение могла обрабатывать программа, и если не смогла его обработать то передала операционке? Просто неудобно когда работаешь с исключениями сама IDE его пытается обработать. |
|
28.10.2012, 20:31 | #8 | |
highly mean
Сообщений: 1,128
Регистрация: 26.05.2011
Возраст: 35
Не в сети |
Disclaimer: я в с++ тоже не соображаю.
Цитата:
http://stackoverflow.com/questions/4...r-c-exceptions http://stackoverflow.com/questions/1...-studio-2008-c Хм… Не знаю, скорее всего нет, не очищать, раз уж реальная причина не придумывается. |
|
28.10.2012, 20:47 | #9 |
Registered User
Сообщений: 1,114
Регистрация: 23.06.2007
Возраст: 56
Не в сети |
однако нагуглил несколько интересных ссылок. Спасибо, буду разбираться!
UPD. Вообщем народ очень рекомендует сконцентрироваться на проверке предварительных условий. или как уже было сказано использовать _set_se_translator(). Последний раз редактировалось Hopkroft; 28.10.2012 в 23:16. |
05.11.2012, 09:04 | #10 |
Форумец
Сообщений: 286
Регистрация: 17.09.2010
Не в сети |
|
05.11.2012, 11:07 | #11 | |
Registered User
Сообщений: 1,114
Регистрация: 23.06.2007
Возраст: 56
Не в сети |
Цитата:
Как я понял, среда брала на себя всю работу по обработке исключительных ситуаций вроде деления на 0. Как оказалось люди не рекомендуют обрабатывать самим эти исключительные ситуации и советуют проверять условия, что-бы не допустить их. Один из моментов когда их рекомендуют обрабатывать, это если вы пользуетесь сторонней библиотекой, которая может иногда выдавать исключительные ситуации. Вот тогда их и рекомендуют перехватывать. Хотя на мой взгляд лучше использовать другую версию библиотеки или вообще другую библиотеку. |
|
05.11.2012, 16:08 | #12 |
highly mean
Сообщений: 1,128
Регистрация: 26.05.2011
Возраст: 35
Не в сети |
|
27.11.2012, 20:54 | #13 |
Наркоман...
Сообщений: 1,858
Регистрация: 20.06.2005
Возраст: 36
Не в сети |
1. я юзал getch(), если праваильно понял-ждет нажатия любой клавиши.
2. можешь сам проверять что бы то на что ты делишь было не ноль, и гененирь исключение(если нужно) или чего то там вызывать... типа if(i ==0){ \\тут обработка если И=нулю } |
27.11.2012, 21:12 | #14 |
Registered User
Сообщений: 1,114
Регистрация: 23.06.2007
Возраст: 56
Не в сети |
Аналогично, но хотел узнать альтернативу.
Это идеальный вариант. А что по поводу ситуации когда юзешь библиотеку, одна из функций которой вываливает исключительную ситуацию, исходников нету, вместо этого dll файл. |