metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2009-02-15 06:22 pm

Qt, обработка ошибок

Что-то в примерах и документации нигде не вижу как обрабатываются ошибки, типа "в функцию передали кривой параметр", "вызов нижележащей ОС сдох, потому что ее сгрызли черви", итд.
Функции типа qWarning,qFatal, итд, вижу, есть. Вроде и обработка исключений какая-то есть, класс вроде Exception. Но вроде ж try-catch религия не позволяет в C++ юзать или я чего-то уже путаю?

Т.е. вообще, как принято обрабатывать ошибки в Qt?

[identity profile] theiced.livejournal.com 2009-02-16 01:23 am (UTC)(link)
Ребе, я вам таки уже объяснил зойчем это сделано. Если охота другого - пишите им багрепорт, авось сделают в Qt5 :)

[identity profile] vp.livejournal.com 2009-02-16 05:24 am (UTC)(link)
ребе! если меня в собственном ЖЖ закидали стулом пара человек, то экстраполируя перспективы на большее линукс-сообщество меня просто закажут. За еритизм.

[identity profile] zamotivator.livejournal.com 2009-02-16 08:16 am (UTC)(link)
Вот не надо отмазываться "еритизмом". Я с трудом могу себя причислить к какому-либо фанатику, тем более - фанатику gcc, но мне такое суждение "писать свой компилятор" кажется просто незнанием предмета и непониманием трудозатрат.
Соотношение трудозатраты/необходимость в данном случае сильно больше единицы.
И не надо забывать о embedded и компиляции на экзотических платформах.
gcc вездесущ - это его плюс, при прочих минусах. Он близок к стандарту - это тоже его плюс.
Плюсы кодогенератора студии убиваются наповал хреновой производительностью (средне-крупный проект распределённой сборкой собирается 15 минут, 15 * 20 = 5 часов, линкуется 20-35 минут), багами в STL, багами в шаблонах.
Маленький moc & uic на 95% решают свою задачу, и статически типизируемыми их сделать МОЖНО. Не делают по некоторым причинам.
Повторюсь, отсутствие статических проверок в moc & uic - большой, жирный минус. Но на мой взгляд статическая проверка должна быть по галочке, а то убьём совместимость с python как минимум.

[identity profile] vp.livejournal.com 2009-02-16 08:49 am (UTC)(link)
ребе, отлично понимаю трудозатраты. Вот может быть потому MS и Борланд не зря берут деньги за свою работу, ибо собаку на этом съели.
Короче, это снова вопрос из серии спроса и предложения, готовности вкладывать в проект деньги или же работать за еду и идею, и т.п.
Холивар, короче :)

[identity profile] zamotivator.livejournal.com 2009-02-16 08:54 am (UTC)(link)
ребе, отлично понимаю трудозатраты. Вот может быть потому MS и Борланд не зря берут деньги за свою работу, ибо собаку на этом съели.
Нет, Вы не поняли, ВЫ ЛИЧНО писали компилятор? А слово legacy говорит о чём-нибудь?

[identity profile] vp.livejournal.com 2009-02-16 09:08 am (UTC)(link)
ребе, я лично компилятор не писал, потому что не специализируют на компиляторах. Еще я не пишу движки для вебсайтов.
Если бы занимался этой темой, то писал бы компиляторы :)

[identity profile] zamotivator.livejournal.com 2009-02-16 09:13 am (UTC)(link)
Еще я не пишу движки для вебсайтов.
Каким образом движки на веб-сайтах связаны с компиляторами?

Далее - разработка компилятора языка уровня С++ - человеко-годы. Поддержка его на массе платформ, исправление ошибок, расширения - это всё человеко-десятилетия.
Продвижение его в массы, как и нового языка - многие миллионы баксов.
И как следствие - проблемы с интеграцией библиотеки в другие языки.
При таком раскладе уж проще написать библиотеку на популярном языке программирования, и портировать её API в другие языки. Что и сделал trolltech.

А вообще - могу я услышать аргументы в пользу "написания системы с нуля" а то может я не являюсь архитектором кучи продаваемых проектов, разве что одного, но мне непонятно, почему с нуля писать нужно.
Может я тупее ежа, лошади, и так далее - но Вы уж позвольте, объясните мне пожалуйста, глупому такому.

[identity profile] vp.livejournal.com 2009-02-16 09:29 am (UTC)(link)
Тебе в языке нужно делать 2+2
компилятор не понимает операции +, у тебя есть 2 варианта, или сделать это кучей сторонних приблуд, когда в итоге у тебя получится вызов типа function('2','2','add'). Если тебя это не пугает, то ок. Если пугает, то надо дорабатывать компилятор. Что тут непонятного? :)

Я понимаю совместимость и т.п. и в частности перед создателями QT вообще снимаю шапку. Но ситуация очень похожа на ту, когда паскаль переползал из DOS в Дельфи. Борланд, к примеру, увеличил количество ключевых слов и расшилил синтаксис в 2 раза. Я думаю, что и тут задача такого же уровня. Конечно, постоянно нужно ориентироваться что это должно быть совместимым по беблиотекам и т.п. со всем имеющимся зверинцем.

[identity profile] max-posedon.livejournal.com 2009-02-16 09:32 am (UTC)(link)
Давай начнём с того, что задача проверки connect, пока совсем не решена никак. Не внешне, не внутренне. При наличии решения, (хоть какого-то), уже можно обсуждать как его ложить, и куда. А пока это просто желание "connect с проверками".

[identity profile] vp.livejournal.com 2009-02-16 09:37 am (UTC)(link)
Тем не менее я заказал уже ворох бумажных книжек по QT. Будем осваивать и будем обязательно пользоваться.

[identity profile] zamotivator.livejournal.com 2009-02-16 09:36 am (UTC)(link)
Тебе в языке нужно делать 2+2
компилятор не понимает операции +, у тебя есть 2 варианта, или сделать это кучей сторонних приблуд, когда в итоге у тебя получится вызов типа function('2','2','add'). Если тебя это не пугает, то ок. Если пугает, то надо дорабатывать компилятор. Что тут непонятного? :)

Объясните мне две вещи:
1) При чём тут обсуждаемая тема (event-driven реализация в Qt)?
2) Почему Вы думаете, что С++ не поддерживает event-driven?
boost.function / boost.singlas / boost.mpi

http://www.webtoolkit.info/
Ребята явно вдохновлялись Qt. Но они сделали компил-тайм-сейфети сигналы и слоты и у них нету препроцессора. Это ярко демонстрирует отсутствие нужды в стороннем компиляторе - языка С++ более чем достаточно.

Напоминаю - тема нашего обсуждения - компил-тайм-сейфети сигналов и слотов. Давайте от этой темы не уходить в пространные рассуждения о кораблях, бороздящих просторы наших вселенных.

Я понимаю совместимость и т.п. и в частности перед создателями QT вообще снимаю шапку. Но ситуация очень похожа на ту, когда паскаль переползал из DOS в Дельфи. Борланд, к примеру, увеличил количество ключевых слов и расшилил синтаксис в 2 раза. Я думаю, что и тут задача такого же уровня. Конечно, постоянно нужно ориентироваться что это должно быть совместимым по беблиотекам и т.п. со всем имеющимся зверинцем.
Я вижу субъективное "похоже".
Ребята из борланда ПОМЕНЯЛИ ЯЗЫК.
А Qt - это БИБЛИОТЕКА.
Разница очевидна?
makefile'ы не считаются "сторонними утилитами", не так ли? А локализация?

[identity profile] kiryl.livejournal.com 2009-02-16 09:38 am (UTC)(link)
У Паскаля и Обжэкт Паскаля никогда не было стандарта, насколько мне известно, поэтому borland делал с языком всё что хотел. С C++ такого не получится.

[identity profile] max-posedon.livejournal.com 2009-02-16 08:56 am (UTC)(link)
Во первых, И скока MS и Borland не берут за свою работу денег, всё равно хуй нормально работают в embedded.

Во вторых, А у Qt основной бизнес угодайте где? Правильно, embedded. Вам то конечно хочется, чтобы всё на блюдечке, но блюдечко не идеально.

В третьих, moc и uic, это не совсем Qt, это механимз интеграции Qt с C++. Слава богу Qt может работать с любым языком, http://qthaskell.berlios.de/ вот вам Haskell, наслаждайтесь.

[identity profile] vp.livejournal.com 2009-02-16 09:06 am (UTC)(link)
Ни MS ни Борланд не брались за ембед потому что не видели там целевой аудитории, которая окупит их потуги. Я думаю причина в этом. Все регулируется деньгами.

[identity profile] max-posedon.livejournal.com 2009-02-16 09:08 am (UTC)(link)
А gcc брался, и Qt этим воспользывался, испокон-веков он в основном существовал за счёт embedded, На примере Opera, такой популярный браузер сейчас собирается на 60!!! архитетурах, вы правда понимаете что такое послать нахуй такой рынок?

[identity profile] vp.livejournal.com 2009-02-16 09:12 am (UTC)(link)
не понимаю почему послать? :)
Развивать, но не так, как это делается.
Новый вариант gcc_qt ж вполне может быть совметсимым со старым.

[identity profile] max-posedon.livejournal.com 2009-02-16 09:16 am (UTC)(link)
то что это будет НОВЫЙ язык, вот что самое плохое. Gcc в жизни не примет такой говно-хак к C++ в upstream. (Ибо это просто бессмысленно)

проблема connect может быть решена внешними интсрументами, или никак. Увы. Такова реальность.

[identity profile] vp.livejournal.com 2009-02-16 09:15 am (UTC)(link)
Ты понмаешь, что этой фразой можно резюмировать:
на 21й, 22й, 23й века - все, в никс архитектуре РАЗВИТИЕ ОСТАНОВЛЕНО
Если мы принимаем такой ход мысли
"ничего нового нельзя писать, только менять старое"

Это же какая-то ИТ шиза, честно я скажу.

[identity profile] max-posedon.livejournal.com 2009-02-16 09:18 am (UTC)(link)
Писать можно/нужно, но с оглядыванием на рентабельность и здравый смысл. Править gcc для connect - не здравый смысл.Так же как здравый смысл не править его для moc и uic.

[identity profile] kong-en-ge.livejournal.com 2009-02-16 09:18 am (UTC)(link)
Ребе, вас за слово ЦА заклеймят как конченого меркантила :)

[identity profile] featalion.livejournal.com 2009-02-16 08:57 am (UTC)(link)
таки не забывайте, что изначально qt был внутренним продуктом тролльтэк (какая клёвая кампания, технологии троллинга). И во внутреннем проекте такая фигня, как написание собственного компилятора - это шизофрения. Изначально ребята делали для себя, а потом уже было поздно переписывать, я думаю.