Russian Qt Forum
Ноябрь 27, 2024, 06:14 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 ... 12 13 [14]   Вниз
  Печать  
Автор Тема: Qt vs VCL  (Прочитано 125118 раз)
shadone
Гость
« Ответ #195 : Июль 20, 2009, 11:55 »

насчет X11 - если сеть упала и сессия была разорвана, то после восстановления сети протокол больше не поднимется насколько я помню. Это поведение необходимо изменять в самой реализации X-сервера.

Не факт, что это не измениться в след. версии X. Если же сессия умирает совсем, как вы говорите,
то можно деинициализировать всё X-соединение и заново пытаться установить связь с X-дисплеем, если
речь идёт про стрессоусточивое приложение. Эта фраза уже даже относится не к исключениям, а относится
если это изменится то с большой вероятностью этот код будет в Xlib (т.е. в клиентской части, т.е. это будет прозрачно для приложения).

к механизму обработки ошибок платформы в целом. Удобно такие и другие ошибки обрабатывать исключениями. Очень жаль, что существуют платформы на которых обязана работать Qt и которые не поддерживают исключения.
Другие аргументы (overhead и т.д.) не кажутся такими существенными.
overhead является довольно существенным для embedded устройств. (к сожалению).
кстати я забыл упомянуть еще одну очень важную причину почему Qt не поддерживает исключения - когда создавалась библиотека очень мало компиляторов поддерживали исключения, а переписывать Qt на использование механизма исключений это монументальный труд (плюс теряется бинарная совместимость), от которого не видно выигрыша, но точно известно что будет некоторый проигрыш в производительности.
Записан
Akon
Гость
« Ответ #196 : Октябрь 01, 2010, 01:10 »

Для поддержки исключений из цикла обработки сообщений есть возможность переопределить QCoreApplication::notify() - отлично. Но если идти до конца, то нужно обеспечить возможность кидать исключения в слотах. Формально (по документации) порядок вызова слотов произвольный, т.е. это подразумевает дизайн программы, при котором в слотах находится независимая логика. Т.е. исключение в слоте не должно блокировать вызов остальных слотов данного сигнала. Для обеспечения такой возможности нужно патчить исходный код Qt, если не ошибаюсь, QObject::activate(). Делал это, когда перешел с VCL, правда потом от этого отказался - отдельный вариант QtCore не всегда удобен.
Записан
fuCtor
Гость
« Ответ #197 : Октябрь 03, 2010, 18:05 »

Дизайн Qt в принципе избегает использования исключений и предпочитает возвращаемые значения. Так что ваше решение больше похоже на костыль вызванный привычкой к предыдущей технологии.
Записан
Akon
Гость
« Ответ #198 : Октябрь 04, 2010, 19:19 »

Это привычка к более совершенному способу обработки ошибок.
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #199 : Октябрь 04, 2010, 20:06 »

Никто не говорил, что эксепшны совершеннее ерроркодов.
В Qt можно встретить места, где класс Эррор кидается сигналом (очень удобно при асинхронной работе). Ловите эксепшны/проверяйте эрроркоды при асинхронности. Удачи:) Всё зависит от задачи.
Тотальные эксепшны раздражают (c#), если честно.
Записан
Akon
Гость
« Ответ #200 : Октябрь 05, 2010, 06:38 »

Никто не говорил, что эксепшны совершеннее ерроркодов.
Тема избита. Не буду здесь провоцировать обсуждение данного вопроса.

В Qt можно встретить места, где класс Эррор кидается сигналом (очень удобно при асинхронной работе). Ловите эксепшны/проверяйте эрроркоды при асинхронности. Удачи:) Всё зависит от задачи.
Согласен. Очень удобно. Не менее удобно в таких случаях (при асинхронной работе) вместо ерроркода использовать исключения - поток завершился, проверяем результат в виде исключения.

Тотальные эксепшны раздражают (c#), если честно.
Меня сильно раздражает, например, такое:
Код:
QFile file("foo.txt");
if (!file.open())  // process error
Записан
crossly
Гость
« Ответ #201 : Октябрь 05, 2010, 09:15 »

сори за офтоп... но по моему это вопрос религии... и холивар тыт разводить не стоит...
Записан
Страниц: 1 ... 12 13 [14]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.053 секунд. Запросов: 22.