Динамическая спецификация исключения не должна использоваться
Динамическая спецификация исключения не должна использоваться.
Динамической спецификацией исключения является метод определения, как функция ведет себя в случае исключения при помощи throw(<list of exceptions>)
оператор в объявлении функции. Используя динамическое исключение спецификация имеет эти проблемы:
Эффективность стоила: Поскольку динамические технические требования исключения проверяются во времени выполнения, оно добавляет к издержкам и может уменьшать производительность кода.
Не подходящий для типового программирования: Поскольку точный тип исключений, повышенных шаблонами функций или шаблонами классов, не обычно известен заранее, он может затруднить, чтобы использовать throw
операторы в типовом коде.
По этим причинам избегайте throw(<list of exceptions>)
оператор, чтобы задать исключения. Используйте noexcept
ключевое слово вместо этого. Поскольку noexcept
операторы проверяются во время компиляции, это подходит для типового программирования и обычно обеспечивает лучшую эффективность, чем throw
операторы. C++ 11 стандартов указывают, что динамическая спецификация исключения будет удалена из C++ в будущем.
Когда throw(<list of exceptions>)
оператор используется в объявлении функции, Polyspace® отмечает throw
оператор. Polyspace не делает флага throw
операторы, которые используются для повышения исключения.
Если вы ожидаете нарушение правила, но не видите его, обратитесь к Кодированию Стандартных Нарушений, Не Отображенных.
Группа: Обработка исключений |
Категория: необходимый, автоматизированный |