|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
07.02.2012, 18:17 | #1 |
C++, Java
Старожил
Регистрация: 10.04.2010
Сообщений: 2,665
|
Генерирование исключений, список throw()
Как бы если мы делаем так:
Код:
Код:
|
07.02.2012, 20:03 | #2 |
Software Engineer
Участник клуба
Регистрация: 07.04.2007
Сообщений: 1,618
|
Компилируется потому что во время компиляции не известно какие исключения генерирует ваша функция на самом деле.
Что вы подразумеваете под словом "работает" я не знаю, но если функция генерирует исключение, которого нет в спецификации исключений, вызывается unexpected(), которая по-умолчанию вызывает terminate()
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
|
07.02.2012, 20:40 | #3 | |
C++, Java
Старожил
Регистрация: 10.04.2010
Сообщений: 2,665
|
Цитата:
Код:
|
|
08.02.2012, 00:06 | #4 |
Software Engineer
Участник клуба
Регистрация: 07.04.2007
Сообщений: 1,618
|
Где не правда? Стандарт в руки и вперед.
конструкция catch(...), в вашем случаи, перехватывает любые исключения, кроме std::string. Т.к. unexpected() попадает в категорию "любые" - оно ловится
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
|
08.02.2012, 10:12 | #5 |
C++, Java
Старожил
Регистрация: 10.04.2010
Сообщений: 2,665
|
Вы меня не поняли, Blade.
Я имею ввиду, почему в функции мы можем вбрасывать те исключения, которые мы не указали в списке throw(). |
08.02.2012, 13:39 | #6 |
Участник клуба
Регистрация: 15.07.2008
Сообщений: 1,933
|
А какой компилятор? MSVS игнорирует спецификацию исключений.
|
08.02.2012, 16:02 | #7 | |
Software Engineer
Участник клуба
Регистрация: 07.04.2007
Сообщений: 1,618
|
Цитата:
Так положено по стандарту. Как это реализовано в различных компиляторах я не знаю, ибо не пользуюсь спецификациями исключений. Вообще этот механизм весьма своеобразный, и им особо не пользуются. Разве что указанием пустого списка throw(), для функций, которые гарантированно не должны генерировать исключений (например для методов std::exception)
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
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 |
не подскажете, где посмотреть список исключений Win32? | Tapapax | Общие вопросы .NET | 3 | 11.11.2009 12:19 |
throw() после обьявления функции | AxenicX | Общие вопросы C/C++ | 1 | 21.10.2009 23:32 |