Qt, обработка ошибок
Feb. 15th, 2009 06:22 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Что-то в примерах и документации нигде не вижу как обрабатываются ошибки, типа "в функцию передали кривой параметр", "вызов нижележащей ОС сдох, потому что ее сгрызли черви", итд.
Функции типа qWarning,qFatal, итд, вижу, есть. Вроде и обработка исключений какая-то есть, класс вроде Exception. Но вроде ж try-catch религия не позволяет в C++ юзать или я чего-то уже путаю?
Т.е. вообще, как принято обрабатывать ошибки в Qt?
Функции типа qWarning,qFatal, итд, вижу, есть. Вроде и обработка исключений какая-то есть, класс вроде Exception. Но вроде ж try-catch религия не позволяет в C++ юзать или я чего-то уже путаю?
Т.е. вообще, как принято обрабатывать ошибки в Qt?
no subject
Date: 2009-02-15 09:29 pm (UTC)На мейнстрим он тянет уже давно =) Недаром его Нокия купила =)
no subject
Date: 2009-02-15 09:32 pm (UTC)no subject
Date: 2009-02-15 09:34 pm (UTC)no subject
Date: 2009-02-16 05:22 am (UTC)Есть священная корова - GCC, которую тронуть никак нельзя, потому бедные QTшкини пошли по привычному пути - решение проблем надстройками, макросами, препроцессорами и т.п. херью, когда тут слону понятно, что задача настолько глубока, что нужно мочить эту священную корову и делать все на другом уровне.
Кстати, мысль эта целиком неприемлима юникс-сообществом :)
Заповедь номер1: Линус Торвальдс свят
Заповедь номер2: GCC незыблимо
Заповедь номер3: все вещи нужно реализовывать конвеерной обработкой на основе имеющихся вещей
Все, сразу же упираемся в теоретический предел.
no subject
Date: 2009-02-16 06:00 am (UTC)Мне непонятно. Ни разу. boost.signals пример решения в рамках текущих инструментов.
no subject
Date: 2009-02-16 06:01 am (UTC)Особенно на тему конвейеров.
Это н еюникс-вей, это какое-то жестокое его извращение.
no subject
Date: 2009-02-16 06:56 am (UTC)1. ничего не писать если возможно
Да, взяли готовый GCC
2. использовать конвеерную обработку (идеологию)
Да, пройдемся 30 раз разными препроцессорами/конверторами и приведем все к тому, чтоб не трогать GCC
Я ж говорю, тут слону понятно, что с ихними задумками сразу должно было стать очевидным, что нужно писать новый компилятор, другой, отдельный. Сам масштаб задачи таков.
no subject
Date: 2009-02-16 07:17 am (UTC)no subject
Date: 2009-02-16 08:11 am (UTC)no subject
Date: 2009-02-16 08:44 am (UTC)no subject
Date: 2009-02-16 08:51 am (UTC)(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2009-02-16 08:07 am (UTC)И я ещё не видел другого настолько продуманного и бесшовного решения.
Интегрируется в любую систему сборки, не требует навороченной IDE чтобы это всё рулить...
no subject
Date: 2009-02-16 08:47 am (UTC)no subject
Date: 2009-02-16 08:50 am (UTC)(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2009-02-16 08:08 am (UTC)Может я тупой, но мне это непонятно. И кажется, что наоборот, путь trolltech & qt - меньшее зло.
З.Ы. Вы пробовали писать свой компилятор? Или транслятор? Простенький какой-нибудь. М?
no subject
Date: 2009-02-16 06:33 am (UTC)no subject
Date: 2009-02-16 01:23 am (UTC)no subject
Date: 2009-02-16 05:24 am (UTC)no subject
Date: 2009-02-16 08:16 am (UTC)Соотношение трудозатраты/необходимость в данном случае сильно больше единицы.
И не надо забывать о embedded и компиляции на экзотических платформах.
gcc вездесущ - это его плюс, при прочих минусах. Он близок к стандарту - это тоже его плюс.
Плюсы кодогенератора студии убиваются наповал хреновой производительностью (средне-крупный проект распределённой сборкой собирается 15 минут, 15 * 20 = 5 часов, линкуется 20-35 минут), багами в STL, багами в шаблонах.
Маленький moc & uic на 95% решают свою задачу, и статически типизируемыми их сделать МОЖНО. Не делают по некоторым причинам.
Повторюсь, отсутствие статических проверок в moc & uic - большой, жирный минус. Но на мой взгляд статическая проверка должна быть по галочке, а то убьём совместимость с python как минимум.
no subject
Date: 2009-02-16 08:49 am (UTC)Короче, это снова вопрос из серии спроса и предложения, готовности вкладывать в проект деньги или же работать за еду и идею, и т.п.
Холивар, короче :)
no subject
Date: 2009-02-16 08:54 am (UTC)Нет, Вы не поняли, ВЫ ЛИЧНО писали компилятор? А слово legacy говорит о чём-нибудь?
no subject
Date: 2009-02-16 09:08 am (UTC)Если бы занимался этой темой, то писал бы компиляторы :)
(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2009-02-16 08:56 am (UTC)Во вторых, А у Qt основной бизнес угодайте где? Правильно, embedded. Вам то конечно хочется, чтобы всё на блюдечке, но блюдечко не идеально.
В третьих, moc и uic, это не совсем Qt, это механимз интеграции Qt с C++. Слава богу Qt может работать с любым языком, http://qthaskell.berlios.de/ вот вам Haskell, наслаждайтесь.
no subject
Date: 2009-02-16 09:06 am (UTC)(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2009-02-16 08:57 am (UTC)