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