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-16 08:54 am (UTC)Много Вы проектов написали? Крупных, продаваемых?
no subject
Date: 2009-02-16 09:02 am (UTC)Активно продаваемых на сегодняшний момент 7 штук.
no subject
Date: 2009-02-16 09:03 am (UTC)В общем, вернёмся в конструктивное русло.
Вы можете привести несколько аргументов в пользу написания компилятора с нуля?
no subject
Date: 2009-02-16 09:05 am (UTC)Языков которые кастятся в gcc много, из старых - java, из новых - vala.
no subject
Date: 2009-02-16 09:10 am (UTC)no subject
Date: 2009-02-16 09:26 am (UTC)no subject
Date: 2009-02-16 09:29 am (UTC)Метапрограммирование (в том значении, в котором я его понимаю), вообще не может быть компилированным.
Есть такой пример в реальной жизни - Prolog, так он "какбы компилируется" но по факту компилируется он в интерпритатор, который уже в run-time делает все выводы.
no subject
Date: 2009-02-16 09:38 am (UTC)Отладчик для такого, конечно, будет аццкой сотоной, ему придется выполнять макросы и показывать в качестве исходников код, декомпилированный из сгенерированного AST. Хотя в холиварах про линукс неоднократно упоминалось, что отладчиком они не пользуются(как и статической типизацией, да).
no subject
Date: 2009-02-16 09:29 am (UTC)Lisp? Непопулярный.
Java - есть метапрограммирования. C# - тоже.
Ещё можно поглядеть на boost.spirit и boost.proto.
Не думаю, что это действительно частая нужная фича. Чаще это overkill архитектурный и реализации. Но два раза с нуждой столкнулся, c++&mpl&fusion хватило по уши.
no subject
Date: 2009-02-16 09:42 am (UTC)Лично мне метапрограммирование нужно для генерации гуя и адаптеров к БД на этапе компиляции - иначе там сотни строк тупого кода чисто присваивания(поле БД->поле объекта-поле экрана и обратно) , а ORM все это дело только ухудшает, добавляя к этим полям еще и поле описания связи объекта и БД.
Ну еще не помешало бы в xml, бинарные форматы и текст сериализовать с помощью метапрограммирования, но это можно и через рефлекшен сделать, хоть и криво.
no subject
Date: 2009-02-16 10:12 am (UTC)Хибернейты юзают кодогенерацию. Это является примером метапрограммирования?
no subject
Date: 2009-02-16 10:15 am (UTC)no subject
Date: 2009-02-16 10:14 am (UTC)Ну почему же криво, наоборот, пример адекватного использоавния. А если руками сериализацию писать - то это на любом языке можно, метапрограммирования тут не нужно.
Конкретно присваивания из гуя и обратно - необязательно метапрограммирование.
MVC, конкретно тот что в Qt это дело упрощает до безобразия.