Название: Обработка исключений в слоте Отправлено: ig от Октябрь 30, 2007, 07:11 Пусть у нас есть два класса.
Сигнал одного класса связан со слотом другого класса. Если произвести отправку сигнала и генерацию исключения в слоте, то это исключение невозможно будет перехватить. Даже с помощью catch (...). Программа ОБЯЗАТЕЛЬНО завершится аварийно. Причем, данное обстоятельство справедливо только для Release-варианта установки Qt. Если Qt установлена с отладочной информацией (debug), то все работает правильно, исключение перехватывается. Проверялось на разных системах (Linux) с разными компиляторами. Кто сталквался с таким или может попробовать у себя (любой тривиальный пример)? Название: Re: Обработка исключений в слоте Отправлено: Alex03 от Октябрь 30, 2007, 07:37 При создании release версии, ключик -no-exceptions не указывался в configure?
Название: Re: Обработка исключений в слоте Отправлено: ig от Октябрь 30, 2007, 07:54 Кстати, судя по всему, его указывают. Интересно, а зачем?
Например, http://www.sisyphus.ru/srpm/qt3/spec Название: Re: Обработка исключений в слоте Отправлено: pastor от Октябрь 30, 2007, 10:11 Это всем известная проблема:
http://lists.trolltech.com/qt-interest/2006-02/thread00862-0.html Название: Re: Обработка исключений в слоте Отправлено: Tonal от Октябрь 30, 2007, 12:26 Код: qt4.3.1\src\corelib\Makefile.Release: Ну -march=pentium3 -mtune=pentium3 эт я сам в mkspecs добавил, а остальное само подставилось... К чему бы это? Да, если внимательно посмотреть справку по configure, можно найти: Код: -no-exceptions ..... Disable exceptions on platforms that support it. Название: Re: Обработка исключений в слоте Отправлено: Alex03 от Октябрь 31, 2007, 11:44 Кстати, судя по всему, его указывают. Интересно, а зачем? 4-ку и под виндой не пробовал а вот размер либы qt 3.x.x под линуксом с -no-exceptions раза в полтора меньше.Ну и я бы не стал слать исключения из слотов. Как минимум Вы уже не гарантируете что некий сигнал получат все законнекченные к нему слоты (хотя Вам это может и не надо) . Название: Re: Обработка исключений в слоте Отправлено: Tonal от Октябрь 31, 2007, 13:22 А я бы не стал отказываться от исключений, без очень серьёзных причин (наример компилятор/ос не поддерживает)
Название: Re: Обработка исключений в слоте Отправлено: pastor от Октябрь 31, 2007, 16:26 В Qt я никогда не использовал испускание исключений, да и смысла и везких причин я особого невижу
Название: Re: Обработка исключений в слоте Отправлено: Вячеслав от Октябрь 31, 2007, 18:58 Смысл есть - чтоб каждый раз не проверять коды возврата из компонентов ;)
IMHO цепочка if'оф смотриться более громозко и нечитабельно чем try-catch.... Просто в Qt надо еще пару телодвижений сделать - не забыть , сделать по варнингу ;) Цитировать "Qt has caught an exception thrown from an event handler. Throwing\n" Чтоб приложение тихо не падало при появлении неучтенного исключения , и продумывать архитектуру приложения ;)"exceptions from an event handler is not supported in Qt. You must\n" "reimplement QApplication::notify() and catch all exceptions there.\n" |