Примечание: Я не играю адвоката дьявола или что-то в этом роде. Мне просто очень любопытно, потому что я сам не в этом лагере.
Большинство типов в стандартной библиотеке имеют либо мутирующие функции, которые могут генерировать исключения (например, если происходит сбой памяти), либо не мутирующие функции, которые могут генерировать исключения (например, вне индексированных индексов). Кроме того, многие свободные функции могут генерировать исключения (например, operator new
и dynamic_cast<T&>
).
Как вы практически справляетесь с этим в контексте "мы не используем исключения"?
-
Вы пытаетесь никогда не вызывать функцию, которая может бросить? (Я не вижу, как это масштабируется, поэтому мне очень интересно услышать, как вы это делаете, если это так)
-
Вы в порядке со стандартной метализацией библиотеки, и вы относитесь к "мы не используем исключения" как "мы никогда не бросаем исключения из нашего кода, и мы никогда не ловим исключения из кода другого"?
-
Вы вообще отключите обработку исключений с помощью компиляторов? Если да, то как работают части, бросающие исключения из стандартной библиотеки?
-
РЕДАКТИРОВАТЬ. Ваши конструкторы могут ли они потерпеть неудачу или вы по договоренности используете двухэтапную конструкцию с выделенной функцией init, которая может возвращать код ошибки при сбое (который конструктор может 't), или вы делаете что-то еще?
РЕДАКТИРОВАТЬ Незначительное разъяснение через 1 неделю после начала вопроса... Большая часть содержания в комментариях и вопросах ниже фокусируется на том, почему аспекты исключений - "что-то еще". Я не заинтересован в этом, но когда вы решите сделать что-то еще, как вы справляетесь со стандартными библиотечными частями, которые генерируют исключения?