Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 25, средняя оценка - 4.72
Avazart
 Аватар для Avazart
7036 / 5213 / 258
Регистрация: 10.12.2010
Сообщений: 22,884
Записей в блоге: 17
#1

ф-ция с throw - C++

25.05.2012, 23:40. Просмотров 3119. Ответов 29
Метки нет (Все метки)

Встретил такую мне незнакомую запись:

C++
1
2
3
4
тип имя_функции( параметры ) throw(что-то)
{
тело_ф-ции
}
Что дает такая запись с throw ?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.05.2012, 23:40     ф-ция с throw
Посмотрите здесь:

C++ Throw exceptions
C++ Операторная ф-ция
C++ throw, try, catch
Try..catch..Throw C++
try-throw-catch C++
C++ ф-ция
C++ try, catch, throw
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
diagon
Higher
 Аватар для diagon
1921 / 1187 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
26.05.2012, 16:26     ф-ция с throw #21
Цитата Сообщение от Bers Посмотреть сообщение
Не отказались. Лишь признали правомерность исключений исключительно в исключительных ситуациях, но не в качестве штатной работы.
Возможно, я слишком плохо знаю английский, но что-то не вижу там такого пункта.
Вижу лишь "We do not use C++ exceptions" и исключение из правил для виндоус-кода.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Avazart
 Аватар для Avazart
7036 / 5213 / 258
Регистрация: 10.12.2010
Сообщений: 22,884
Записей в блоге: 17
26.05.2012, 16:28  [ТС]     ф-ция с throw #22
Прочитав раздел по исключения в этой книге я только запутался... так и не понял стратегию исключений и в чем подводные камни...
Естественно мне понятно что может быть утечка памяти из-за неправильно организованых исключений(вроде как отсюда и появились умные указатели...)
Но во всем другом чет не догнал... сильно уж абстрактно и без примеров

насколько геморройно писать безопасный с точки зрения исключений код.
А как без них?
Bers
Заблокирован
26.05.2012, 16:30     ф-ция с throw #23
Цитата Сообщение от diagon Посмотреть сообщение
Возможно, я слишком плохо знаю английский, но что-то не вижу там такого пункта.
есть некий инструмент, который может бросить исключение. Это вынуждает вызывающую сторону пасти исключения.

Нравится это, или нет.

Гугл пользуются инструментами и фрейморками, а так же обеспечивают средства работы с этими другими фреймворками. Поставляют библиотеки и тд.

Другими словами, они живут не в сферическом ваккуме, и им приходится учитывать эти ситуации.

Они лишь гарантирует, что ихние поставщики услуг исключений не кидают.
Avazart
 Аватар для Avazart
7036 / 5213 / 258
Регистрация: 10.12.2010
Сообщений: 22,884
Записей в блоге: 17
26.05.2012, 16:30  [ТС]     ф-ция с throw #24
diagon, ну так ты имел ввиду не пользоваться спецификациями исключений, или исключениями вообще?
Именно об этом я спрашивал...
Bers
Заблокирован
26.05.2012, 16:33     ф-ция с throw #25
Цитата Сообщение от Avazart Посмотреть сообщение
А как без них?
Игру запускаю в режиме "автоматическая без графики", и иду пить чай.
Через 15 минут прихожу (там уже порядка 15000-20000 игр), и смотрю где вылет: трассу стека функций. И сразу вижу, какова была ситуация перед тем, как сработала система безопасности.

Искусственно повторяю ситуацию, исправляю, потом запускаю ещё партию из 15000-20000 игр, и иду пить чай.
diagon
Higher
 Аватар для diagon
1921 / 1187 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
26.05.2012, 16:41     ф-ция с throw #26
Цитата Сообщение от Avazart Посмотреть сообщение
Прочитав раздел по исключения в этой книге я только запутался... так и не понял стратегию исключений и в чем подводные камни...
Естественно мне понятно что может быть утечка памяти из-за неправильно организованых исключений(вроде как отсюда и появились умные указатели...)
Но во всем другом чет не догнал... сильно уж абстрактно и без примеров
Мне также тяжело дался этот раздел(тяжелее него был лишь раздел про экспорт шаблонов). Причем это было сложновато просто понять. А уж как проектируют архитектуру сложных приложений с учетом исключений, я вообще не могу представить.

Цитата Сообщение от Avazart Посмотреть сообщение
А как без них?
Старые добрые коды ошибок в С-стиле.
Вроде
C
1
2
3
4
if (p = malloc(...) )
   //все ок
else
   //ошибка
В плюсах вместо этого генерируется исключение, поэтому new попросту опасно использовать с точки зрения исключений.
Еще красивее сделана функция perror.
Это все были С-шные примеры, но в плюсах эта схема также используется.
boost::error_code очень ярко это иллюстрирует
Еще можно ассерты использовать.
В общем, способов довольно много.
grizlik78
Эксперт С++
 Аватар для grizlik78
1890 / 1422 / 104
Регистрация: 29.05.2011
Сообщений: 2,977
26.05.2012, 16:48     ф-ция с throw #27
Цитата Сообщение от Avazart Посмотреть сообщение
Прочитав раздел по исключения в этой книге я только запутался...
В какой? Саттер? А предыдущую его книгу тоже читал?
Bers
Заблокирован
26.05.2012, 16:51     ф-ция с throw #28
Цитата Сообщение от diagon Посмотреть сообщение
В плюсах вместо этого генерируется исключение, поэтому new попросту опасно использовать с точки зрения исключений.
можно юзать и без искл.

Цитата Сообщение от diagon Посмотреть сообщение
Еще можно ассерты использовать.
Только не сырые. Макрос над макросом. Ибо, каждая система сборки исповедует собственную религию, и полагаться на стандартизированные флаги дебаг/релиз нельзя.
Avazart
 Аватар для Avazart
7036 / 5213 / 258
Регистрация: 10.12.2010
Сообщений: 22,884
Записей в блоге: 17
26.05.2012, 17:27  [ТС]     ф-ция с throw #29
В какой? Саттер? А предыдущую его книгу тоже читал?
Предыдущую это какую?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.05.2012, 18:07     ф-ция с throw
Еще ссылки по теме:

C++ Throw()
Noexcept и throw() C++
C++ Try,catch,throw,OVERFLOW!
C++ Объясните синтаксис throw
C++ Try, catch, throw

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
grizlik78
Эксперт С++
 Аватар для grizlik78
1890 / 1422 / 104
Регистрация: 29.05.2011
Сообщений: 2,977
26.05.2012, 18:07     ф-ция с throw #30
Решение сложных задач на C++.
Кстати, слово "сложных" в названии обеих книг не случайно. Они действительно, в большинстве своём, сложные. Хотя и не всегда задачи.
Yandex
Объявления
26.05.2012, 18:07     ф-ция с throw
Ответ Создать тему
Опции темы

Текущее время: 00:12. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru