![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
Fazil6 |
|
||||||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 35 Всего: 60 |
потому, что все исключения обработаны коректно. нет. При раскрутке стека и уничтожении обектов вполне допускаются исключения. terminate вызовется только если у тебя получится на руках больше одного необработаного исключения, т.е. если какие-то иключения небудут вовремя обработаны.
сразу 2 исключения, а это уже папандос... |
||||||
|
|||||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
Думаю стоит начать с русского: я не один раз упомянул о том, что для terminate исключение должно вывалиться из деструктора(наружу). Фантазируй поменьше и читай повнимательней. -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
akizelokro |
|
||||
![]() Крокодил ![]() ![]() Профиль Группа: Участник Сообщений: 761 Регистрация: 30.7.2007 Репутация: 1 Всего: 5 |
C учетом того, что эксперты иной раз у нас да лопухнутся (ничего личного), я все-таки предпочитаю верить более надежным источникам. Если "exits using an exception" означает "вывалиться из деструктора(наружу)", то приношу свои извинения за назойливость. -------------------- a = a + b; b = a - b; a = a - b; |
||||
|
|||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
Ок. Как можно выйти из ф-ции(коей деструктор тоже является)? Либо return, либо исключение. Здесь упомянут только второй вариант(выходит из деструктора из-за [неперехваченного] исключения). Извинения принимаются, но будь любезен быть немного повнимательней, а если не знаешь английский, то верь наслово русскоговорящим "экспертам, которые лопухаются". -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
Все одновременно вряд ли. Обычно, один глупость сморозит другие поправят. А когда все в один голос говорят одно и тоже, но разными словами, то не верить не стоит. ![]() |
|||
|
||||
akizelokro |
|
|||
![]() Крокодил ![]() ![]() Профиль Группа: Участник Сообщений: 761 Регистрация: 30.7.2007 Репутация: 1 Всего: 5 |
Иными словами, у стандарта совсем не дружелюбный интерфейс). "unhandled" в упомянутой строке нет, а в предыдущей есть.
А сам виноват. Отсылаешь меня к стандарту, когда я говорю, что мне еще рано за него садиться. В неправильном переводе меня не поправил. Пример дал не тот. Вообщем, пока я сам не накорябал соответствующий пример и не прогнал его на двух разных компилерах и таким образом получил ответ на свои вопросы, только тогда эксперты проснулись. Все равно спасибо, но я лишний раз убедился, что в сложных (для меня) вопросах нужно брать самому и компиляться. Это сообщение отредактировал(а) akizelokro - 1.11.2007, 08:15 -------------------- a = a + b; b = a - b; a = a - b; |
|||
|
||||
archimed7592 |
|
||||||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
Извините пожалста, а как можно выйти из ф-ции из-за обработанного исключения? Прошу у тебя прощения, если ты действительно считаешь, что я в чём-то виноват.
Я перед этим черным по белому написал об этом, просто упомянув, что это указано в стандарте. Да что ты говоришь? А это ты типа не заметил... Бывают же такие неблагодарные создания... Вот если я чего-то не знаю - да я сто раз спасибо скажу, если меня чему-то научат(и буду совершенно искреннен). А ты всё выставишь так, будто тут все тебе обязаны и вообще, ты тут самый умный, просто на время "забыл" о чём идёт речь. Твоё конечно дело, но, блин, начинает раздражать(не первый топик в которым ты себя так ведёшь).
Угу. Только не компиляться, а разбираться. -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
||||||
|
|||||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 52 Всего: 207 |
компилятор - не панацея т. е результат он даст, но где гарантия, что он правильный? ![]() -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
akizelokro |
|
|||
![]() Крокодил ![]() ![]() Профиль Группа: Участник Сообщений: 761 Регистрация: 30.7.2007 Репутация: 1 Всего: 5 |
Не надо мне мозги пудрить. Я тебе черным по белому писал, что исключение будет обрабатываться внутри деструктора. К тому же ты, как я смотрю, выбираешь довольно простые и удобные для себя аргументы (что имеет право на существование, но сомнительно для меня, - я даже простецкие, но принципиальные по логике ошибки не редактирую и оставляю, чтобы не чваниться,- хотя они мне и становятся видны через 5 минут после отправки мессаджа). Небольшое усложнение кода
, где деструктор находится в функциональном блоке try-catch. Этот код не компилится под MSVC++ 6 и BDS2006. мне удалось прокомпилить его под MSVS 2008 Beta2. Здесь действительно программа выходит из деструктора по исключению, даже несмотря на то, что исключение обрабатывается в деструкторе. В предыдущих твоих примерах программа могла выходить из деструктора только при необработанном исключении (есть разница). Сейчас terminate() вызывается. Здесь возможны два варианта: -Beta версия и есть Beta версия -генерировать исключения в деструкторах не рекомендуется (но это вообще другая песня). Пока что я считаю исключения одним из самых муторных разделов C++ (моя субъективная оценка). К теме экспертов и их уровня возвращаться не хочу. Просто просьба прокомпилить код под другим компилером и ткнуть мне в нос результаты. Это сообщение отредактировал(а) akizelokro - 1.11.2007, 10:12 -------------------- a = a + b; b = a - b; a = a - b; |
|||
|
||||
Fazil6 |
|
||||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 35 Всего: 60 |
хм... А разве такой синтаксис допустим в С++ ??? ![]()
нет ничего необычного в исключениях в деструкторе. можно их там и генерить и использовать. Выпускать их из деструктора нерекомендуется Добавлено через 1 минуту и 11 секунд
какие результаты? исправь ошибку синтаксиса и все нормально работает в твоем примере |
||||
|
|||||
Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: 51 Всего: 70 |
||||
|
||||
Daevaorn |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: 51 Всего: 70 |
читаем внимательно стандарт
а ты нам не пудри!
весь в тебя PS: akizelokro,совет остается в силе! |
||||
|
|||||
UnrealMan |
|
||||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 722 Регистрация: 30.3.2006 Репутация: 27 Всего: 32 |
Вот такие два варианта кода
это не одно и то же. В первом случае function-try-block, во втором - обычный try-block. И применительно к деструктору поведение получается разным. Это сообщение отредактировал(а) UnrealMan - 1.11.2007, 11:35 |
||||||
|
|||||||
akizelokro |
|
||||||
![]() Крокодил ![]() ![]() Профиль Группа: Участник Сообщений: 761 Регистрация: 30.7.2007 Репутация: 1 Всего: 5 |
Угу. В твоем первом случае согласно цитате из стандарта, приведенной комодератором (если я опять "неправильно" перевел ![]()
в которой не указывается явно "unhandled", но есть "exits". Сорри, мне просто нужно сдавать тест, а на предварилке я по исключениям очень крупно влетел. Вот и пытаюсь хоть таким образом переварить кашу из исключений, которая заварилась у меня в голове ![]()
Во-первых, не совет, а официальное предупреждение от комодератора в личной переписке и в сообщении с очень "деликатно оформленной" темой. Я помню ![]() Жду, когда замодерируют. Жаловаться не буду. Это сообщение отредактировал(а) akizelokro - 1.11.2007, 11:57 -------------------- a = a + b; b = a - b; a = a - b; |
||||||
|
|||||||
archimed7592 |
|
||||||||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
А за базар то придётся ответить ![]() Ткни пальцем, где ты об этом написал.
![]() Ещё раз для тех кто в танке: как можно выйти из ф-ции, используя перехваченное исключение(не return)? Приведёшь пример, получишь миллион плюсов в репу, лично моё наиглубочайшее уважение, а также, сможешь рассказывать внукам "я нашёл опечатку в стандарте и её исправили". Это очень важный(в частности для твоего понимания "самого муторного раздела С++") вопрос в этом споре. Как только ты на него ответишь, так сразу у тебя отпадут все, задаваемые тобой в этом топике вопросы. Ты считаешь нормальным вызывать негативное мнение о тебе у других участников форума только ради того, чтобы сдать какой-то там тест? А ну ка, эксперты, поднапряглись и быстро всё ему объяснили - его величеству нужно тест сдавать! ![]() Daevaorn, MAKCim, давно ли это(и зачем) вас понизили до комодов? 0_о -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
||||||||
|
|||||||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |