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

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

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

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

[identity profile] max-posedon.livejournal.com 2009-02-15 04:33 pm (UTC)(link)
Сам Qt реализован в стиле, вернуть код ошибки, посрать в log (warning,debug, fatal, в зависимости от критичности)

Программисту же всё остальное отдаётся на собственное усмотрение, хочешь try-catch и exception-ы, хочешь return value. Хочешь смесь по настроению. Qt он ортогонален всему этому. А что не так с try-catch религией в C++? Вроде как наоборот самый рекомендуемых механизм.

[identity profile] metaclass.livejournal.com 2009-02-15 04:38 pm (UTC)(link)
А, значет я наверно с try-finally перепутал, который там практически не нужен из-за RAII и автоматических убиений созданных на стеке объектов.

[identity profile] max-posedon.livejournal.com 2009-02-15 04:39 pm (UTC)(link)
Ага, именно так, try-finally и его отсутвие в C++, уже когда-то обсуждался

[identity profile] atzkey.livejournal.com 2009-02-15 05:43 pm (UTC)(link)
Вы чтоле бложек общий заведите, а то сильно множества постов пересекаться начали. Вон, Макспасидон разрывается просто, отвечая на одинаковые вопросы.

Или О! Составляйте список вопросов, с которыми не можете разобраться и раз в пару дней в каком-нибудь из журналов публикуйте.

[identity profile] zamotivator.livejournal.com 2009-02-15 06:51 pm (UTC)(link)
Сами точки возникновения ошибок сведены к минимуму, локализованы.
Ведь убиваешься тапком на каждом чихе ошибки проверять =) Лучше - когда дизайн минимизирует число ошибок, что ты можешь сделать.

И как тебе Qt в целом? Не влюбился ещё? =)

[identity profile] metaclass.livejournal.com 2009-02-15 07:03 pm (UTC)(link)
Я доки по нему читаю и проги корежу вперемежку с срочным писанием индусского говнища на дотнете, чтобы не сойти с ума :)

[identity profile] zamotivator.livejournal.com 2009-02-15 07:24 pm (UTC)(link)
Чтобы не сойти с ума от чего? =)

[identity profile] metaclass.livejournal.com 2009-02-15 07:36 pm (UTC)(link)
от долбаного дотнета, вижуал студии и софта, который я на всем этом пишу.

[identity profile] zamotivator.livejournal.com 2009-02-15 07:42 pm (UTC)(link)
А qt-то нравится? =)

[identity profile] metaclass.livejournal.com 2009-02-15 07:56 pm (UTC)(link)
Да, сделано достаточно разумно.

[identity profile] zamotivator.livejournal.com 2009-02-15 08:00 pm (UTC)(link)
И С++ не такой страшный, как говорят, ога? =)

[identity profile] vp.livejournal.com 2009-02-15 09:00 pm (UTC)(link)
А при чем тут С++? Основное назначение базового языка - он не должен раздражать убогостью. Например, PHP, VB и т.п. птичьи языки бесяд. А когда в основе С-подобный или паскаль, где все строго типизировано, оно не может ложиться поперек мозга.
Человеку после 10 лет разработок, я так понимаю, вообще все равно какой базовый язык.

[identity profile] zamotivator.livejournal.com 2009-02-15 09:12 pm (UTC)(link)
Просто Qt очень критикуют за С++.
А то, что она хороша - заслуга разработчиков, а не языка.
Биндингов в большое количество языков как бэ потверждают, что архитектура Qt кошерна =)

[identity profile] vp.livejournal.com 2009-02-15 09:27 pm (UTC)(link)
А я это вообще не понимаю. Главное, чтобы они вылизали продукт до состояния идеального. Мне вот после 3х дневного изучения QT на сегодня кажется, что продукт весьма и весьма тянет на мейнстрим, т.к кто бы что ни говорил, а тенденция ухода от микрософта таки намечается. Жаль только, что без линуксячьего помета не обошлось в этом деле :(

[identity profile] zamotivator.livejournal.com 2009-02-15 09:29 pm (UTC)(link)
Какого такого линуксьячего помёта?
На мейнстрим он тянет уже давно =) Недаром его Нокия купила =)

[identity profile] vp.livejournal.com 2009-02-15 09:32 pm (UTC)(link)
Про реализацию connect без возможности каких-либо статический проверок на этапе компиляции. У меня в ЖЖ.

[identity profile] zamotivator.livejournal.com 2009-02-15 09:34 pm (UTC)(link)
Оооооооооо, я на это так давно зубы точу =) Но линукс тут ни причём.

[identity profile] theiced.livejournal.com 2009-02-16 01:21 am (UTC)(link)
Точно. Абы он был нормальный и не бесил. Поэтому 83% языков отсеиваются сразу ;)

[identity profile] theiced.livejournal.com 2009-02-16 01:22 am (UTC)(link)
Ненавижу С++ (примерно так же как перл), но Qt таки скрывает, с большего, плюсатую блевотину.

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

[identity profile] vp.livejournal.com 2009-02-16 05:15 am (UTC)(link)
На любом языке можно писать в истерическом стиле, когда будут черви, жабы, змеи, невозможность отладки и т.п. На С++ такое поулчается в особенности хорошо :)
Просто писать надо из соображения, что код будут потом обслуживать.

[identity profile] vp.livejournal.com 2009-02-16 05:22 am (UTC)(link)
Именно юниксвей тут причем.
Есть священная корова - GCC, которую тронуть никак нельзя, потому бедные QTшкини пошли по привычному пути - решение проблем надстройками, макросами, препроцессорами и т.п. херью, когда тут слону понятно, что задача настолько глубока, что нужно мочить эту священную корову и делать все на другом уровне.
Кстати, мысль эта целиком неприемлима юникс-сообществом :)
Заповедь номер1: Линус Торвальдс свят
Заповедь номер2: GCC незыблимо
Заповедь номер3: все вещи нужно реализовывать конвеерной обработкой на основе имеющихся вещей

Все, сразу же упираемся в теоретический предел.

[identity profile] vp.livejournal.com 2009-02-16 05:23 am (UTC)(link)
Остается С (+базирующиеся на нем Java+C#), C++ и Паскаль (Дельфи).
Остальное от лукавого имхо на 100%

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

[identity profile] zamotivator.livejournal.com 2009-02-16 06:00 am (UTC)(link)
когда тут слону понятно, что задача настолько глубока, что нужно мочить эту священную корову и делать все на другом уровне.
Мне непонятно. Ни разу. boost.signals пример решения в рамках текущих инструментов.

Page 1 of 4