Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.01.2013, 01:38   #1
Arrioh
Пользователь
 
Регистрация: 25.03.2012
Сообщений: 60
Радость try,throw,catch vs goto

Здравствуйте. Изучаю с++. После прочтения главы об обработке исключений, возник вопрос: В чем преимущество набора операторов try,throw,catch? Почему не просто goto? Всех с праздниками)
Arrioh вне форума Ответить с цитированием
Старый 05.01.2013, 08:39   #2
Blind Guard
Форумчанин
 
Регистрация: 14.03.2012
Сообщений: 139
По умолчанию

try, throw, catch с goto сравнивать вообще нельзя.
try, throw, catch генерируют, перехватывают и обрабатывают исключительную ситуацию, а goto просто телепортирует из одной точки кода в другую.
Почитай ещё раз эту главу, мб вы её не поняли
Blind Guard вне форума Ответить с цитированием
Старый 05.01.2013, 12:40   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Почему не просто goto?
А, стесняюсь спросить, как с goto понять какой тип исключения произошел?
Ладно еще с WIN API тут можно выкрутится но в остальном...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 05.01.2013, 13:07   #4
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,372
По умолчанию

Кроме того, goto работает только в пределах одной функции, тогда как изключение может возникнуть в одной функции а быть перехваченным в другой.
waleri вне форума Ответить с цитированием
Старый 05.01.2013, 20:33   #5
Perchik71
С++, Delphi
Форумчанин
 
Аватар для Perchik71
 
Регистрация: 24.11.2012
Сообщений: 495
По умолчанию

все циклы мнима используют goto....
Это заставляет перейти на метку, связи с тем, что код читается сверху вниз. эту дерективу С++ не желательно использовать.
Не забывайте что вы пишите объекты....
а не структурное программирование.
Если помог, тут весы есть , Вам не сложно, а мне приятно.
Perchik71 вне форума Ответить с цитированием
Старый 07.01.2013, 15:01   #6
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Stilet
Цитата:
Ладно еще с WIN API тут можно выкрутится но в остальном...
причем тут винапи?
waleri
Цитата:
Кроме того, goto работает только в пределах одной функции, тогда как изключение может возникнуть в одной функции а быть перехваченным в другой.
в древности была такая штука как long jump (я не помню как ей пользоваться, но это типа типа goto, только между функциями)
Perchik71
Цитата:
Это заставляет перейти на метку, связи с тем, что код читается сверху вниз. эту дерективу С++ не желательно использовать.
Не забывайте что вы пишите объекты....
а не структурное программирование.
я ваще ниче не понял, что курили?

Последний раз редактировалось rrrFer; 07.01.2013 в 15:02. Причина: скобочку пропустил
rrrFer вне форума Ответить с цитированием
Старый 07.01.2013, 15:04   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
причем тут винапи?
Для сравнения.
Цитата:
я ваще ниче не понял, что курили?
А он то прав. такой телепорт между методами обьектов будет скорее губителен чем полезен.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 07.01.2013, 15:27   #8
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Цитата:
Для сравнения.
как можно WinAPI с goto или try сравнивать
Цитата:
А он то прав.
он вообще абракадабру написал.
Цитата:
такой телепорт между методами обьектов будет скорее губителен чем полезен.
то, что goto (и даже long jump) не годится для обработки исключений тут никто не оспаривает вроде бы. Blind Guard все нормально сформулировал в первом посте.

Цитата:
А, стесняюсь спросить, как с goto понять какой тип исключения произошел?
как с goto вобще можно узнать что исключение произошло?
если вас интересуют костыли - то можно мильон вариантов придумать, самый простой...заведите какую-нибудь функцию специально для обработки ошибок и пишите в ней метку типа ZeroDivision, вот когда вы перейдете на нее - то у вас где-то деление на ноль в программе, только зачем все эти извращения?

Цитата:
такой телепорт между методами обьектов будет скорее губителен чем полезен.
у вас исключение, уже все погублено )
rrrFer вне форума Ответить с цитированием
Старый 07.01.2013, 16:46   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
как можно WinAPI с goto или try сравнивать
try ведь всего лишь обертка над системными функциями, так что почему бы не сравнить. И потом я имел ввиду немного другое: Функция не возбуждая исключения возвращает результат. В условии проверяется и если ошибка вызывается некая процедура - чем не обработчик исключений?
Цитата:
у вас исключение, уже все погублено )
Ну дык ведь апокаллипсис был недавно
Ща вот земля магнитные полюса сменит и никто уже на такие мелочи как goto обращать внимания не будет
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 07.01.2013, 17:36   #10
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

окей
[OFFTOP]
Цитата:
Ну дык ведь апокаллипсис был недавно
Ща вот земля магнитные полюса сменит и никто уже на такие мелочи как goto обращать внимания не будет
а че-то у меня плюсомет не работает.[/OFFTOP]
rrrFer вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Генерирование исключений, список throw() _-Re@l-_ Visual C++ 6 08.02.2012 16:02
Try, throw, catch; нужно ли знать ООП PHP для изучения исключений? alex455 PHP 1 01.08.2011 13:46
throw, try, catch (С++) mego4el Помощь студентам 2 31.05.2011 18:39
throw Syltan Общие вопросы по Java, Java SE, Kotlin 3 17.06.2010 20:35
throw() после обьявления функции AxenicX Общие вопросы C/C++ 1 21.10.2009 23:32