Qt, обработка ошибок
Что-то в примерах и документации нигде не вижу как обрабатываются ошибки, типа "в функцию передали кривой параметр", "вызов нижележащей ОС сдох, потому что ее сгрызли черви", итд.
Функции типа qWarning,qFatal, итд, вижу, есть. Вроде и обработка исключений какая-то есть, класс вроде Exception. Но вроде ж try-catch религия не позволяет в C++ юзать или я чего-то уже путаю?
Т.е. вообще, как принято обрабатывать ошибки в Qt?
Функции типа qWarning,qFatal, итд, вижу, есть. Вроде и обработка исключений какая-то есть, класс вроде Exception. Но вроде ж try-catch религия не позволяет в C++ юзать или я чего-то уже путаю?
Т.е. вообще, как принято обрабатывать ошибки в Qt?
no subject
На мейнстрим он тянет уже давно =) Недаром его Нокия купила =)
no subject
no subject
no subject
Есть священная корова - GCC, которую тронуть никак нельзя, потому бедные QTшкини пошли по привычному пути - решение проблем надстройками, макросами, препроцессорами и т.п. херью, когда тут слону понятно, что задача настолько глубока, что нужно мочить эту священную корову и делать все на другом уровне.
Кстати, мысль эта целиком неприемлима юникс-сообществом :)
Заповедь номер1: Линус Торвальдс свят
Заповедь номер2: GCC незыблимо
Заповедь номер3: все вещи нужно реализовывать конвеерной обработкой на основе имеющихся вещей
Все, сразу же упираемся в теоретический предел.
no subject
Мне непонятно. Ни разу. boost.signals пример решения в рамках текущих инструментов.
no subject
Особенно на тему конвейеров.
Это н еюникс-вей, это какое-то жестокое его извращение.
no subject
1. ничего не писать если возможно
Да, взяли готовый GCC
2. использовать конвеерную обработку (идеологию)
Да, пройдемся 30 раз разными препроцессорами/конверторами и приведем все к тому, чтоб не трогать GCC
Я ж говорю, тут слону понятно, что с ихними задумками сразу должно было стать очевидным, что нужно писать новый компилятор, другой, отдельный. Сам масштаб задачи таков.
no subject
no subject
no subject
no subject
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
no subject
И я ещё не видел другого настолько продуманного и бесшовного решения.
Интегрируется в любую систему сборки, не требует навороченной IDE чтобы это всё рулить...
no subject
no subject
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
no subject
Может я тупой, но мне это непонятно. И кажется, что наоборот, путь trolltech & qt - меньшее зло.
З.Ы. Вы пробовали писать свой компилятор? Или транслятор? Простенький какой-нибудь. М?
no subject
no subject
no subject
no subject
Соотношение трудозатраты/необходимость в данном случае сильно больше единицы.
И не надо забывать о embedded и компиляции на экзотических платформах.
gcc вездесущ - это его плюс, при прочих минусах. Он близок к стандарту - это тоже его плюс.
Плюсы кодогенератора студии убиваются наповал хреновой производительностью (средне-крупный проект распределённой сборкой собирается 15 минут, 15 * 20 = 5 часов, линкуется 20-35 минут), багами в STL, багами в шаблонах.
Маленький moc & uic на 95% решают свою задачу, и статически типизируемыми их сделать МОЖНО. Не делают по некоторым причинам.
Повторюсь, отсутствие статических проверок в moc & uic - большой, жирный минус. Но на мой взгляд статическая проверка должна быть по галочке, а то убьём совместимость с python как минимум.
no subject
Короче, это снова вопрос из серии спроса и предложения, готовности вкладывать в проект деньги или же работать за еду и идею, и т.п.
Холивар, короче :)
no subject
Нет, Вы не поняли, ВЫ ЛИЧНО писали компилятор? А слово legacy говорит о чём-нибудь?
no subject
Если бы занимался этой темой, то писал бы компиляторы :)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
no subject
Во вторых, А у Qt основной бизнес угодайте где? Правильно, embedded. Вам то конечно хочется, чтобы всё на блюдечке, но блюдечко не идеально.
В третьих, moc и uic, это не совсем Qt, это механимз интеграции Qt с C++. Слава богу Qt может работать с любым языком, http://qthaskell.berlios.de/ вот вам Haskell, наслаждайтесь.
no subject
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
no subject