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

ф-ция с throw - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 25, средняя оценка - 4.72
Avazart
 Аватар для Avazart
6901 / 5141 / 252
Регистрация: 10.12.2010
Сообщений: 22,598
Записей в блоге: 17
25.05.2012, 23:40     ф-ция с throw #1
Встретил такую мне незнакомую запись:

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

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

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

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

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

Они лишь гарантирует, что ихние поставщики услуг исключений не кидают.
Avazart
 Аватар для Avazart
6901 / 5141 / 252
Регистрация: 10.12.2010
Сообщений: 22,598
Записей в блоге: 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
1920 / 1186 / 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
Эксперт C++
 Аватар для grizlik78
1882 / 1414 / 101
Регистрация: 29.05.2011
Сообщений: 2,958
26.05.2012, 16:48     ф-ция с throw #27
Цитата Сообщение от Avazart Посмотреть сообщение
Прочитав раздел по исключения в этой книге я только запутался...
В какой? Саттер? А предыдущую его книгу тоже читал?
Bers
Заблокирован
26.05.2012, 16:51     ф-ция с throw #28
Цитата Сообщение от diagon Посмотреть сообщение
В плюсах вместо этого генерируется исключение, поэтому new попросту опасно использовать с точки зрения исключений.
можно юзать и без искл.

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

C++ try, catch, throw
C++ Throw()
Noexcept и throw() C++

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

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

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