metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2014-09-29 11:55 am

С++ EH и логика на исключениях

Хорошо ли в C++ программе делать логику на исключениях?
Я ща втыкаю в одну опенсорсную СУБД в продакшене отладчиком и вижу что там на каждый запрос валится стопицот крестиковых исключений, и не понимаю, это нормально или нет.

[identity profile] vit-r.livejournal.com 2014-09-29 01:17 pm (UTC)(link)
Ничего не мешает из функции вернуть объект.

Исключение - это исключение. Отказ ресурса или ошибочные данные - это штатная ситуация в программе.

[identity profile] cross-join.livejournal.com 2014-09-29 01:27 pm (UTC)(link)
Мешает необходимость явного контракта "кто освобождает возвращаемый объект", распространяющегося на все функции в программе. В программе на миллион строк отслеживать ошибки такого рода затруднительно.
Да и незачем перекладывать это на программиста без особых причин.
В процедурном стиле для возвратов используются структуры (записи), а не объекты.

[identity profile] vit-r.livejournal.com 2014-09-29 01:44 pm (UTC)(link)
Работа с памятью - это на порядок более простая проблема, чем алгоритмы и правильная обработка.

[identity profile] cross-join.livejournal.com 2014-09-29 01:56 pm (UTC)(link)
Она простая, когда в системе есть сборщик мусора. Но тогда накладные расходы на поддержку механизма исключений покажутся смешными в сравнении.