Обработчики catch-all (ellipsis и std:: exception) должны использоваться только в (a) основных, (b) основных функциях задачи, (c) в функциях, которые должны изолировать независимые компоненты и (d) при вызове стороннего кода, который использует исключения не согласно рекомендациям AUTOSAR C++ 14
Обработчики catch-all (ellipsis и std:: exception) должны использоваться только в (a) основных, (b) основных функциях задачи, (c) в функциях, которые должны изолировать независимые компоненты и (d) при вызове стороннего кода, который использует исключения, не соответствующие рекомендациям AUTOSAR C++ 14.
Захватывайте все обработчики, такие как catch(std::exception)
или catch(...)
блоки соответствуют многим различным типам исключений. Если вы обрабатываете исключение при помощи такого обработчика catch-all, у вас нет подробной и конкретной информации о вызванном исключении. Такие обработчики catch-all не могут предпринять значимых действий, чтобы обработать вызванные исключения. Эти обработчики catch-all полезны при обработке неожиданных исключений, снова поднимая исключения или правильно выходя из приложения.
Поскольку обработчики catch-all полезны для определенных целей, их неэффективно использовать в каждой функции. Используйте обработчики catch-all в:
Основные функции
Основные функции задачи
Функции, которые вызывают стороннюю функцию, которая может быть несовместима с рекомендациями AUTOSAR C++ 14
Функции, которые предназначены для выделения независимых компонентов вашего кода
Polyspace® флаги catch(std::exception)
и catch(...)
блоки в функции, если ни одно из них не является true:
Функция является main()
функция.
Функция является основной функцией задачи.
Функция вызывает внешнюю или стороннюю функцию, которая может выйти за исключением.
Polyspace обнаруживает main()
функция. Чтобы задать функцию в качестве основной функции задачи, используйте следующие опции компиляции:
-entry-points < имя >
-циклические-задачи < имя >
-interrupts < имя >
Если вы ожидаете нарушения правил, но не видите его, обратитесь к разделу «Стандартные нарушения кодирования не отображаются».
Группа: Обработка исключений |
Категория: Необходимый, Неавтоматизированный |