![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| rukudias |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 201 Регистрация: 28.2.2007 Репутация: 0 Всего: 0 |
Привет Всем!
есть код
Вопрос какого типа буд сгенерировано исключение! |
|||
|
||||
| vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 13 Всего: 56 |
рискну предположить, что никакого. Будет крах и не более.
|
|||
|
||||
| rukudias |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 201 Регистрация: 28.2.2007 Репутация: 0 Всего: 0 |
таки да!
НО почему компилятор не отлавливает эту ситуйовицу? |
|||
|
||||
| vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 13 Всего: 56 |
а зачем такое ловить? это потенциально бесполезное действие.. А компилятору лишний гемморой, все таки программы пишут программисты, а не домохозяйки
|
|||
|
||||
| rukudias |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 201 Регистрация: 28.2.2007 Репутация: 0 Всего: 0 |
|
|||
|
||||
| vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 13 Всего: 56 |
rukudias, угу, я даже могу угадать что словит внешний catch
Короче тебе лучше почитать про исключения, throw; в catch это повторная генерация исключения. |
|||
|
||||
| J0ker |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 986 Регистрация: 17.9.2008 Репутация: 4 Всего: 14 |
не нао бредить господа
есть такое понятие, как стандарт: 15.1 "A throw-expression with no operand rethrows the exception being handled. The exception is reactivated with the existing temporary; no new temporary exception object is created. The exception is no longer considered to be caught; therefore, the value of uncaught_exception() will again be true." и далее: "15.5.1 The terminate() function In the following situations exception handling must be abandoned for less subtle error handling techniques: ---------- покатано ------------------- — when a throw-expression with no operand attempts to rethrow an exception and no exception is being handled (15.1)" |
|||
|
||||
| rukudias |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 201 Регистрация: 28.2.2007 Репутация: 0 Всего: 0 |
можно на русский
|
|||
|
||||
| vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 13 Всего: 56 |
||||
|
||||
| J0ker |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 986 Регистрация: 17.9.2008 Репутация: 4 Всего: 14 |
если хотите програмить - учите английский
throw без параметров вызывает повторный выброс эксепшена сохраненного во временной переменной без ее пересоздния если никакого эксцепшена до этого не было, то вызыается функция terminate() здесь
компилятор должен работать по стандарту, а не потому, что "геморрой" |
|||
|
||||
| vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 13 Всего: 56 |
J0ker, ну и где там написано, что на это должен реагировать компилятор?
terminate() срабатывает, но эжто время выполнения, а не время компиляции. З.Ы Компилятор никому ниче не должен, поэтому стандарт полностью не соблюдается нигде(насколько я знаю), так , что уповать на стандарт не стоит. |
|||
|
||||
| rukudias |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 201 Регистрация: 28.2.2007 Репутация: 0 Всего: 0 |
Респект и уважуха!
ЗЫ кинь сцылку на стандарты |
|||
|
||||
| J0ker |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 986 Регистрация: 17.9.2008 Репутация: 4 Всего: 14 |
1. компилятор ни на что не реагирует - он объктный код генерирует 2. обработка исключений (в том числе и вызов terminate()) разрешается на этапе компиляции 3. компилятор ОБЯЗАН соответствовать cтандарту. Несоответствие стандарту является багом. Компилятор может обрабатывать некоторые расширения, которые не противоречат стандарту. Вы знаете не правильно. Добавлено через 9 минут и 11 секунд
http://www.usatlas.bnl.gov/~dladams/cpp/IN...+14882-2003.pdf напоминаю, что на подходе новый стандарт: http://www.open-std.org/jtc1/sc22/wg21/doc...2008/n2705.html |
||||
|
|||||
| UnrealMan |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 722 Регистрация: 30.3.2006 Репутация: 27 Всего: 32 |
Потому что это имело бы смысл только для main.
Добавлено через 36 секунд
|
||||
|
|||||
| J0ker |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 986 Регистрация: 17.9.2008 Репутация: 4 Всего: 14 |
нет, не поэтому это не ошибка максимум что разрешается сделать в этом случае компилятору - выкинуть ворнинг |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |