Re[5]: Эксепшн из деструктора
От: ibnhatab Украина  
Дата: 23.11.11 18:19
Оценка:
Здравствуйте, Тот кто сидит в пруду, Вы писали:

ТКС>Здравствуйте, ibnhatab, Вы писали:


А>>>>>Недавно на собеседовании спросили, почему нельзя кидать исключение из деструктора. А, собственно, почему? Накидал в 2005-й студии тестовый код, вроде все нормально отработало.


XMK>>>>потому что деструктор может вызваться из-за брошенного исключения, в этом случае выкинутое исключение из деструктора даст сразу два необработанных исключения и неопределенное поведение с точки зрения стандарта. наличие необработанного исключения можно проверить функцией std::uncaught_exception.


ТКС>>>Чоэто вдруг неопределенное? std::terminate() — очень даже определенное поведение.


I>>А откуда ему там взятся если стоит catch(...)?


ТКС>15.2.3 —

ТКС>

ТКС>If a destructor called during stack unwinding exits with an exception, std::terminate is called


Сдается мне что это фича нового стандарта. В С++ 98 такого вроде бы нету
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.