Я думаю, что в основном это FUD, в наши дни.
Исключения имеют небольшие накладные расходы при входе и выходе из блоков, которые создают объекты, которые имеют конструкторы / деструкторы, но на самом деле это не должно равняться банкебобов в большинстве случаев.
Мера первая, Оптимизация вторая.
Однако создание исключения обычно медленнее, чем просто возвращение логического флага, поэтому генерирует исключения только для исключительных событий .
В одном случае я видел, что RTL создает целые печатаемые трассировки стека из таблиц символов всякий раз, когда генерируется исключение для потенциального использования при отладке.Как вы можете себе представить, это было нехорошо .Это было несколько лет назад, и библиотека отладки была поспешно исправлена, когда это стало известно.
Но, IMO, надежность, которую вы можете получить от правильного использования исключений, намного перевешивает незначительное снижение производительности.Используйте их, но осторожно.
Редактировать:
@ jalf делает несколько хороших замечаний, и мой ответ выше был нацелен на связанный с этим вопрос, почему многие встроили Разработчики в целом все еще игнорируют исключения.
Но если разработчик SDK для конкретной платформы скажет " не используйте исключения ", вам, вероятно, придется пойти на это.Возможно, есть определенные проблемы с реализацией исключений в их библиотеке или компиляторе - или, возможно, они обеспокоены исключениями, возникающими в обратных вызовах, вызывающих проблемы из-за отсутствия безопасности исключений в их собственном коде.