LINUX.ORG.RU

Qt and C++ try{} catch(...)  — BUG


0

0
Похоже эти засранцы из Qt перемудрили с реализацией сигналов - делаешь в main() try блок создаешь форму приконнекчиваешь к кнопке формы функцию в ней кидаешь исключение - все - вылетаем в систему с Aborted :( Ну шо за дела - зачем было городить эти сигналы так извращенно ? В том же долбанном C++ Builder подобные фишки легко работают :(

Напишите что ли этим ребятам...

anonymous
Так мож обработчик исключений есть в qt в его цикле обработки событий? Тогда он и ловит твой throw, и до твоего обработчика дело не доходит. Это так, предположения...
NewComer
()
Нет был бы обработчик он бы поймал исключение и либо погасил бы его либо отдал дальше. На самом деле ничего не гасится - так как программа вылетает в систему и ничего не передается так как тогда catch(...) поймал бы сие. Просто из-за этого чертового механизма сигналов Qt компилятор не осознает где именно ловить исключение и оно улетает мимо catch(...) :(((
anonymous
()
Блин сам ты засранец...
Люди такую либу написли а ты их ругаешь...
Ты кидаешь исключение в ондном потоке а ловишь в другом что ты хоте то...?
anonymous
()
С чего ты взял что это разные потоки ? Просто посмотри как ведет себя в подобной ситуации чертов C++ Builder - у него все ловится в main() и тут должно быть так-же ибо это единственно верный путь
anonymous
()
А ты еще попробуй VS откомпили там еще 3-й вариант будет...
anonymous
()
Если структура вызовов функций такая:

main -> библиотечная_функция -> твой_генератор_исключений

значит исключение не проходит через библиотеку.

Причин может быть несколько.
Наиболее вероятная: библиотека собрана без RTTI.
То есть при сборке была указана опция `-fno-rtti'.
Кроме того, если вызов твоей функции проходит через код на "чистом" Си, то сишные модули должны быть скомпилированы с `-fexceptions'.
nobody ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.