![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Peter |
|
|||
|
Unregistered |
Смотрел как-то в книжке СИшные ключевые слова; все знакомо, кроме catch. Что это такое, нигде не мог найти. Может, плохо искал? Подскажите, пожалуйста.
|
|||
|
||||
| Baa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2639 Регистрация: 12.4.2002 Где: Москва Репутация: 8 Всего: 12 |
Оно нужно для обрабоки исключений...
Странно, что бы знаешь ключевое слово try, потому как оно используется в паре с catch -------------------- "Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande |
|||
|
||||
| Step |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: 5 Всего: 25 |
try{
возможна исключтительная ситуация } catch(...){ как ее обрабатывать } -------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
| Peter |
|
|||
|
Unregistered |
Спасибо. Но мне кажется, try - это что-то из области J++, а не Си. По-моему, try в списке ключевых не встречалось.
|
|||
|
||||
| RAN |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 709 Регистрация: 14.3.2003 Где: Щёлково Моск.обл. Репутация: 5 Всего: 6 |
Блин, исключения Java от C достались. Прям обидно даже за любимый язык.
|
|||
|
||||
| Step |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: 5 Всего: 25 |
люди даже историю языка не знают на котором пишут -------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
| Fantasist |
|
|||
|
Лентяй ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1517 Регистрация: 24.3.2002 Репутация: 4 Всего: 41 |
Ух-ты! Даже! Может расскажешь историю С++? А заодно Интернета, тоже ведь пользуешься. Ну и Visual Studio. А кто знает, исключения появились вначале в С или в С++? -------------------- Волны гасят ветер... |
|||
|
||||
| Kor |
|
|||
|
Unregistered |
Исключения впервые появились в С++
в с их нет. В Java они появились вместе с рождением JAVA но не раньше его... Кстати господа о яичнице, есть еще ключевое слово finally |
|||
|
||||
| Step |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: 5 Всего: 25 |
Fantasist ты в своем репертуаре.....
-------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
| Step |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: 5 Всего: 25 |
могу и рассказать, так как в плане компьютерных наук, нам только историю и давали, и больше не х***на -------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
| GanZaleZ |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 15.7.2003 Репутация: нет Всего: нет |
Да стабильно , исключения появились в С++ , в С для этого использовался другой механизм .
"catch" нужен жля отлова исключений которые могут возникнуть в блоке "try" или там же в try" исключение можно выбросить самому использую "then какаято переменая или строка". Если выбрасываеш сам , то в "catch ()" в скобках нужно поставить тип выбрасываемого исключения ,как функция, Если хочеш отлавливать все тогда савятся ТРИ ТОЧКИ "catch (...)" ; |
|||
|
||||
| RAN |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 709 Регистрация: 14.3.2003 Где: Щёлково Моск.обл. Репутация: 5 Всего: 6 |
throw вообще-то, а не then |
|||
|
||||
| Peter |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 771 Регистрация: 28.7.2003 Где: Ставрополь Репутация: -1 Всего: 1 |
[Ладно уж, зарегистрируюсь...]
Спасибо за ваши ответы, только по ним я не могу стать крутым программером по обработке исключений. Где это все можно прочитать? И еще: с какой версии C++ стала возможной обработка исключений? -------------------- всё, что делаете, делайте от души, как для Господа (Послание апостола Павла колоссянам, 3:23). |
|||
|
||||
| mr.DUDA |
|
||||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 25 Всего: 232 |
Примеров куча в MSDN. Вообще, нужно определиться "а надо-ли оно тебе". Ведь можно реализовать обработку ошибок до их возникновения - простыми проверками выполнения условий, а можно то же самое сделать ч/з блок try-catch, но тогда отлавливать ошибку будешь не ты, а ОС; тебе же дадут право сделать какие-то действия ПОСЛЕ возникновения ошибки. Простой пример - обработка исключений памяти в проге на MFC:
Обрабатывать можно любые исключения ОС. Особо важна их обработка для файловых операций, и вообще в ситуациях, когда ты не имеешь 100% контроля над каким-то процессом. Просто бери контролируемый кусок кода в "скобки" try, а в блоке catch выполняй любые "ответные" действия - закрыть файл, освободить память и т.д. Еще раз повторюсь - читай MSDN, там куча информации по ВСЕМ вопросам. Если нету на компакте - заходи на microsoft.com в онлайновую версию MSDN, она чем-то даже удобнее. P.S. Кстати, в Си нету такого ключевого слова "finally" - это из Делфи. P.P.S. По-моему, в Borland C++ 3.11 появилась поддержка исключений, а может и еще раньше. -------------------- ![]() |
||||
|
|||||
| TaTaP |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 86 Регистрация: 15.10.2002 Репутация: 1 Всего: 1 |
Использовать исключения надо - это факт. Есть такой неписаный закон - ко всякой функции необходимо подходить с подозрением на то, что она может выбросить исключения, а каждую функцию проверять в if..else большой гимор => без try...catch никуда не деться.
P.S. "catch(...)" это далеко не то же самое, что "catch(CException *pex)". Например, по Стандарту, operator new в случае неуспешного выделения памяти выбрасывает исключение bad_alloc, поэтому "catch(CException *pex)" его не перехватит, а "catch(...)" обработает корректно. Чем плох "catch(...)", что неизвестно, кто так тебя обломал и выбросил исключение. P.P.S. а finally в С++ есть (по крайней мере в VC++, не знаю, как в других компиляторах). Их в Стандарте нет, это просто расширение Microsoft... Это сообщение отредактировал(а) TaTaP - 29.7.2003, 02:51 |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |