Если конструктор не будет noexcept, и конструктор не может закончить объектную инициализацию, то это должно освободить ресурсы объекта, и это должно выдать исключение
Если конструктор не будет noexcept, и конструктор не может закончить объектную инициализацию, то это должно освободить ресурсы объекта, и это должно выдать исключение.
Когда конструктор резко отключает из-за необработанного исключения или привел динамическое распределение ресурсов к сбою, оно может оставить некоторые объекты в частично созданном объекте, который является неопределенным поведением. Прежде, чем повысить исключения в конструкторах класса, освободите уже выделенные ресурсы. При выделении ресурсов задайте new операция как std::nothrow. В качестве альтернативы выполните распределение ресурсов в try или function-try блокируйтесь, чтобы обработать исключения, которые могут явиться результатом не пройдено выделения.
Polyspace® отмечает throw или new оператор вне try блокируйтесь в non-noexcept конструктор класса, если оператор может привести к утечке ресурсов. Например:
throw оператор вне try блок отмечается, если выделенные ресурсы не освобождены перед оператором.
new оператор отмечается, если он не задан как std::nothrow или перенесенный в try или function-try блок.
Polyspace игнорирует классы, которые остаются неиспользованными в вашем коде.
Если вы ожидаете нарушение правила, но не видите его, относитесь, чтобы Диагностировать, Почему Кодирующие Стандартные Нарушения Не Появляются как ожидалось.
| Группа: Обработка исключений |
| Категория: Необходимый, Частично автоматизированный |