- 1
- 2
- 3
- 4
- 5
- 6
- 7
~Guard(){
if(std::uncaught_exception())
try{
}catch(...){
error_output<<"prevented exception!!!"<<endl;
};
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+17
~Guard(){
if(std::uncaught_exception())
try{
}catch(...){
error_output<<"prevented exception!!!"<<endl;
};
}
Вот, к примеру: http://ideone.com/F0YXTz
> оптимизация?
Скорее всего деталь реализации unwinder'а - сначала ищет докуда отмотать, а потом отматывает. А раз исключение не ловят - тупо вызывает terminate положив на все хуй.
Да вполне читабельный. Жопа в том, что в рантайме подобный трейс для пойманного исключения не получить ;( Для своих то можно, а вот для других библиотек - фиг.
- Покажи бектрейс исключения, пожалуйста.
- Только через мой труп!
Ну и как выше пишет laMer007 - можно вставить try в main'е и обработать исключение самому.
В крестах нет потоков.
Вечером почитаю, что на этот счет думает стандарт с++11. Но вроде бы не terminate.
Доведи шутку до конца. А что там? Зеки?
std::abort?
Таки std::terminate.
Да - если исключение поймают где-то выше по стеку.
Нет - если никто не захочет его обрабатывать.
> волшебным образом не даст исключению всплыть
catch в 4й строке никогда не сработает. Так что весь код декоративный, не более того.
И чего аффтару в try-catch не обернулось...