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 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 это дело упрощает до безобразия.