С++.. exception...

hashion

Кто-нибудь знает ответ на вопрос: почему использование исключений в оконных интерфейсах (а может и везде - в частности в qt/kde) являеться нежелательным?

evgen5555

Потому что это говнобиблиотеки, и до ума их довести никто не хочет.

eduard615

1) скорость
2)не все компиляторы поддерживают (во всяком случае, когда это зачиналось, так было)
3)слоты не поддерживают эксепшины
4) никому нахуй они не нужны
5)в рассылках куте это было разжевано много лет назад

hashion

ну а если backend уже написан с использованием exceptions и в нём отнють не 10 строчек кода, а к нему хочеться прикрутить оконный интерфейс? как быть? СРанно всё это....

eduard615

ну если хочется, то прикрути, кто запрещает?

smnikiforov

>4) никому нахуй они не нужны
ты, конечно, куда более авторитетен в этом вопросе, чем ARM

hashion

сообщения об ошибках. Придёться перестроить всё, очень много исправлений. С другой стороны можно просто убрать опцию -fno-exception. Но кто мне дастарантию, что в один прекрасный момент с выходом очередной версии qt это всё не перестанет работать?

eduard615

наличие эксепшенов в твоей проге на линковку сказываться не должно -- должно все прекрасно слинковаться с куте
2 : повторяю по буквам -- троллям и кдешникам они не нужны. почему -- смотри в архивах. что делает арм -- малоебучий фактор

hashion

на линковку - никакого влияния. А вот как отлавливать их в самом графическом интерфейсе, ведь любые ошибки в библиотеке вызывают исключения. Перехватить их нельзя. Aborted.
Архивы уже ищу. Не знаю где я был, когда всё это обсуждалось, виноват...

rosali

Если ты бросаешь исключения и ловишь в рамках своего кода, то тебя ничего не должно волновать. Я не в курсе что такое qt но сдается мне, что все эти предупреждения относятся к тому, что исключение не должно лететь через стек библиотечных функций. Вот в виндовсе например


WinProc(...)
{
throw 0;
}
...
try
{
::DispatchMessage(...);
}
catch(...)
{}


Такое можно было бы хотеть, но вроде нельзя...
PS 2 : unix-оиды вообще с трудом отрывают свою жопу от ANSI C, но это не всегда связано с тем, что они хорошо разобрались в том, от чего отказываются, и решили что это не нужно...

rosali

1) скорость

В оконных интерфейсах на первом месте стоит скорость, это да!..

VitMix

ну а если backend уже написан с использованием exceptions и в нём отнють не 10 строчек кода, а к нему хочеться прикрутить оконный интерфейс?
Можно вокруг каждого обращения к backendу поставить try/catch, который ловит всё. Тогда до Qt исключения не дойдут.

hashion

Вобщем-то да.... надо бы уточнить этот вопрос.. в случае внешней компоновки проблем может быть много...

hashion

Ну в общем-то вариант... хотя при генерации исключения backend ещё собирает информацию об ошибке, её хорошо бы обрабатывать... а так она до графики не дойдёт... придёться опять из..ся нелучшим способом..

rosali

А ты в этом catch-е поставь MessageBox (или как он там в qt называется) и дойдет твоя информация до графики
PS. А эта qt подобна чем то WINAPI? message driven на callback-ах, или еще что-то можно придумать?

hashion

предположим, что в библиотеке ничего изменить нельзя, тем более нельзя прописать зависимость от библиотеки GUI.
ps: ну да, только обьектно-ориентированная модель...

smnikiforov

какие факторы для тебя малоебучие - малоебучий фактор

rosali

предположим, что в библиотеке ничего изменить нельзя

В какой библиотеке?
Я про вот это говорю:
Можно вокруг каждого обращения к backendу поставить try/catch,
Оставить комментарий
Имя или ник:
Комментарий: