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