Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Что за модификатор throw() у методов классов? ищу ищу, найти не могу, что это и зачем 
V
    Опции темы
bsa
Дата 22.10.2006, 21:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



История такая, пишу прогу. Пишу себе пишу, и тут выясняется, что очень хорошо было бы использовать исключения. Не проблема. Подключаю <exception>, создаю класс потомок от std::exception перегружаю what()... И каково мое удивление, когда не собирается - мол, мое определение отличается от базового... Нахожу этот exception, открываю и вижу, что там у метода what() и деструктора стоит некий модификатор throw(). Так вот, мне совершенно не понятно (и, каюсь, в гугле не нашел) что это такое и с чем едят.
Может это то, о чем я всю жизнь мечтал (например, содержит список генерируемых исключений - нашел подобную тему, но в java). smile
PM   Вверх
Daevaorn
Дата 22.10.2006, 21:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

Репутация: 51
Всего: 70



Цитата(bsa @  22.10.2006,  22:44 Найти цитируемый пост)
Может это то, о чем я всю жизнь мечтал (например, содержит список генерируемых исключений - нашел подобную тему, но в java). 

А налогично и в С++.
throw() - это спецификатор исключения, гарантирующий что метод не будет генерировать исключения. Если произойдет обратное, то будет вызван std::unexpected, а потом программа завершится
PM MAIL WWW   Вверх
bsa
Дата 22.10.2006, 21:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



А можно в нем указать список генерируемых исключений?
PM   Вверх
MAKCim
Дата 22.10.2006, 21:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



Цитата

А можно в нем указать список генерируемых исключений? 

да, собственно он для этого и предназначен


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
bsa
Дата 22.10.2006, 22:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



т.е. я спокойно могу написать что-то подобное?
Код

class {
...
my_re_type my_method(my_type &value) throw(Error1, Error3, Error9);
...
};

PM   Вверх
Daevaorn
Дата 22.10.2006, 22:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

Репутация: 51
Всего: 70



Цитата(bsa @  22.10.2006,  23:02 Найти цитируемый пост)
т.е. я спокойно могу написать что-то подобное?

да.

Цитата(bsa @  22.10.2006,  23:02 Найти цитируемый пост)
Error1, Error3, Error9

естественно должны быть уже определены
PM MAIL WWW   Вверх
bsa
Дата 22.10.2006, 22:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



классно. smile
PM   Вверх
Xenon
Дата 22.10.2006, 22:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1529
Регистрация: 12.4.2006

Репутация: 11
Всего: 50



Да, только для этого нужен соотвествующий catch с такими же аргументами


--------------------
user posted image  
PM MAIL   Вверх
Daevaorn
Дата 22.10.2006, 22:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

Репутация: 51
Всего: 70



Цитата(Xenon @  22.10.2006,  23:12 Найти цитируемый пост)
Да, только для этого нужен соотвествующий catch с такими же аргументами 

?
PM MAIL WWW   Вверх
Xenon
Дата 22.10.2006, 22:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1529
Регистрация: 12.4.2006

Репутация: 11
Всего: 50



Daevaorn, ну кто-то же должен перехватывать исключения?

Это сообщение отредактировал(а) Xenon - 22.10.2006, 22:38


--------------------
user posted image  
PM MAIL   Вверх
bsa
Дата 22.10.2006, 23:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



Для меня исключение в данном проекте - это фатальное завершение (к сожалению дальнейшая работа не возможна). Мне достаточно штатного "перехватчика" libstdc++, который выводит что-то типа "приложение получило SIGABRT... what(): ... ".
PM   Вверх
Xenon
Дата 22.10.2006, 23:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1529
Регистрация: 12.4.2006

Репутация: 11
Всего: 50



bsa, а, понял smile


--------------------
user posted image  
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0602 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.