LINUX.ORG.RU

Qt и исключения


0

0

Почему в Qt не используются исключения?

Честно говоря я не встречал ни одной библиотеки C++, которая использовала бы исключения. Вроде бы такой удобный механизм обработки ошибок (сужу по Java и C#)...

В чем дело?


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

anonymous
()
Ответ на: комментарий от anonymous

Исключения в c++ - жуткий костыль, который к тому же и криво реализован. Плюс, не все компиляторы их поддерживают. И код с исключениями работает медленне, и требует намного больше стека.

krum
()
Ответ на: комментарий от krum

> Исключения в c++ - жуткий костыль

ааафигеть,,, и что же в нем жуткого?

> И код с исключениями работает медленне

Если исключение брошено - конечно.

> требует намного больше стека

Хм, цифры? ссылки?

tailgunner ★★★★★
()

Я когда-то немного изучал Qt и сделал для себя вывод о том, что очень много вещей в Qt сложилось исторически. Видимо, давным-давно были какие-то проблемы с поддержкой исключений в компиляторах - поэтому исключения в Qt не используются. Это не является причиной придерживаться того же подхода при написании своего кода.

syomin
()

Вообще на С++ можно писать с исключениями, можно без них (коды возврата, etc). В принципе оба подхода имеют право на существование.

Legioner ★★★★★
()

>Почему в Qt не используются исключения?

ИМХО, одна из причин qtopia, компиляторы для всяких железок могут и не поддерживать исключения.

И какая-то поддержка все-таки есть,
например если выбросить исключения и не поймать, то qt напечатает предупреждение, перед тем как бросить его дальше :)

fghj ★★★★★
()
Ответ на: комментарий от syomin

>Я когда-то немного изучал Qt и сделал для себя вывод о том, что очень много >вещей в Qt сложилось исторически. Видимо, давным-давно были какие-то >проблемы с поддержкой исключений в компиляторах - поэтому исключения в Qt не >используются. Это не является причиной придерживаться того же подхода при >написании своего кода.

Не скажу точно на счёт исключений , но сигналы и слоты именно по этой причине
не шаблонные .

kitov ★★★
()
Ответ на: комментарий от kitov

А я точно скажу, так же как и с сигналами/слотами исключения не используются из-за исторических проблем с поддержкой исключений в компиляторах. Это даже в асистенте написано где-то.

LestorN
()

1. Исключения поддерживаются не всеми компиляторами.
2. Исключения невозможно перекинуть через C-шные функции
3. Исключениями далеко не все умеют пользоваться (да чего там. даже ловить правильно зачастую не умеют).
4. Исключения нельзя выкидывать из конструкторов, а в QT очень много действий производится конструктором.

ну и вообще оч. советую прочесть книгу "C++ for real programmers" - станет понятно почему в QT не используется одно и используется другое.

имхо QT писали очень толковые разработчики.

eXOR ★★★★★
()
Ответ на: комментарий от eXOR

> 1. Исключения поддерживаются не всеми компиляторами.

Какие компиляторы за последние 6-7 лет их не поддерживают?

> 2. Исключения невозможно перекинуть через C-шные функции

Можно подробнее?

> 4. Исключения нельзя выкидывать из конструкторов

Из деструкторов, AFAIK. И это не повод отказываться от исключений в других местах.

tailgunner ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.