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 ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.