2 / 2 / 1
Регистрация: 21.11.2011
Сообщений: 183
|
||||||
1 | ||||||
Ограничения исключительных ситуаций f(.)throw(.){}07.08.2012, 13:09. Показов 2551. Ответов 20
Метки нет (Все метки)
Пробовал скомпилировать пример из Г. Шилдта [1]:
0
|
07.08.2012, 13:09 | |
Ответы с готовыми решениями:
20
Обработка исключительных ситуаций Обработка исключительных ситуаций! Обработка исключительных ситуаций Обработки исключительных ситуаций |
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
07.08.2012, 13:13 | 2 |
Alberto_Timakov, Не заморачивайтесь на этом. Компиляторы творят со спецификацией исключений, что хотят. По стандарту, если выкидывается исключение, не входящее в спецификацию, должна быть вызвана функция unexpected, которая по умолчанию вызывает std::terminate, так же можно написать свой хандлер, который будет либо вызывать abort/terminate либо кидать исключение допустимого типа (теоретически так можно, на практике - никогда не предусмотришь все возможные исключения). В С++11 спецификации исключений помечены как deprecated, так что не советую забивать себе голову этим.
http://liveworkspace.org/code/... a2d72c8ea7
2
|
2 / 2 / 1
Регистрация: 21.11.2011
Сообщений: 183
|
|
07.08.2012, 13:20 [ТС] | 3 |
ну ок...)
Добавлено через 31 секунду Т.е. это совсем бесполезная штука?
0
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
07.08.2012, 13:24 | 4 |
Alberto_Timakov, Абсолютно. Единственное для чего она могла быть полезна - пустая спецификация исключений (throw()) - указывает, что функция не должна кидать исключений вообще, компилятор может произвести (а может и нет) некие оптимизации (или песимизации). В С++11 есть оператор noexcept(bool), который по сути является заменой спецификации исключений, если значение true - функция не имеет права кидать никаких исключений, если false то вполне имеет.
0
|
07.08.2012, 13:25 | 5 |
0
|
2 / 2 / 1
Регистрация: 21.11.2011
Сообщений: 183
|
|
07.08.2012, 13:38 [ТС] | 6 |
Ну я так понял, что игнорирование этого списка исключений...
0
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
07.08.2012, 13:38 | 7 |
Avazart,
0
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
07.08.2012, 13:43 | 9 |
Avazart, Именно. Так же deprecated всякие биндеры (т.к. есть std::bind), auto_ptr (std::shared_ptr, std::unique_ptr, std::weak_ptr) и т.д.
0
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
07.08.2012, 14:25 | 11 |
Avazart, Потому что auto_ptr - плохой смарт-пойнтер. У него очень странная семантика владения и т.д.
1
|
2 / 2 / 1
Регистрация: 21.11.2011
Сообщений: 183
|
||||||
07.08.2012, 14:29 [ТС] | 12 | |||||
а вот еще вопрос,
Написал, следующий код (Шилдт, аналогично на http://www.cplusplus.com/refer... terminate/ да и на этом форуме есть нечто похожее на что ответа нету...): Но он почему-то не работает...что не так?
0
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
07.08.2012, 14:31 | 13 |
Alberto_Timakov, А. MSVC не вызывает unexpected.
0
|
2 / 2 / 1
Регистрация: 21.11.2011
Сообщений: 183
|
|
07.08.2012, 14:32 [ТС] | 14 |
Выдает сообщение "Необработанное исключение в "0x7c812aeb" в "Monstrr.exe": Исключение Microsoft C++: int по адресу 0x0012fea0..", а сообщения "Новый обработчик terminate()" не выдает...
0
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
07.08.2012, 14:36 | 16 |
На самом деле все работает http://liveworkspace.org/code/... b7c452a268, просто у MSVC странная точка зрения на это, вызывает ли он terminate_handler сказать не могу.
Добавлено через 1 минуту
0
|
2 / 2 / 1
Регистрация: 21.11.2011
Сообщений: 183
|
|
07.08.2012, 14:37 [ТС] | 17 |
0
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
07.08.2012, 14:38 | 18 |
Alberto_Timakov, Я бы на вашем месте проверил как у MSVC в релизе с этим дела обстоят. Вполне возможно, что в debug версии он не зовется, а в релизе зовется.
0
|
2 / 2 / 1
Регистрация: 21.11.2011
Сообщений: 183
|
|
07.08.2012, 14:51 [ТС] | 19 |
Если под релизом подразумевается то, что лежит в папке debug, то да, все работает, спасибо!)
0
|
07.08.2012, 14:54 | 20 |
Режим компиляции отладочный или итоговый подразумевается
0
|
07.08.2012, 14:54 | |
07.08.2012, 14:54 | |
Помогаю со студенческими работами здесь
20
Обработка исключительных ситуаций Обработка исключительных ситуаций Обработка исключительных ситуаций Обработка исключительных ситуаций Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |