Основная функция и основная функция задачи должны захватывать как минимум: исключения базового класса из всех используемых сторонних библиотек, std:: исключение и все необработанные исключения
Основная функция и основная функция задачи должны захватывать как минимум: исключения базового класса из всех используемых сторонних библиотек, std:: исключение и все необработанные исключения.
Во время выполнения main() или основной функции задачи, могут возникнуть различные исключения. Для образца:
Явным образом вызваны исключения из std::exception классов
Исключения, вытекающие из используемых сторонних библиотек
Неожиданные исключения
Если какое-либо из этих исключений не может быть сопоставлено с обработчиком, компилятор неявно вызывает функцию std::terminate() для ненормального прекращения выполнения программы. В зависимости от оборудования и программного обеспечения, которые вы используете, этот процесс завершения может вызвать std::abort() чтобы прервать выполнение программы, не удаляя переменные в стеке. Такое ненормальное прекращение приводит к утечкам памяти и уязвимостям безопасности.
Необработанные исключения могут привести к ненормальному прекращению выполнения программы, что приводит к утечкам памяти и уязвимостям безопасности. Чтобы избежать этих проблем, выполните операции main() или основные функции задачи в try-catch блок. В блоках catch:
Обрабатывайте исключения типа std::exception явно в соответствующих блоках catch.
Обрабатывайте базовый класс исключений, возникающих из сторонних библиотек.
Обрабатывайте неожиданные исключения в catch(...) блок.
Polyspace® флаги a main() функцию или основную функцию задачи, если:
В функции возникают необработанные исключения. Для примера, исключения, возникающие вне try-catch блок или блок catch могут остаться необработанными.
Функция не имеет try-catch блок.
Функция не имеет блоков catch для явной обработки std::exception типы исключений.
Функция не имеет catch-all или catch(...) блоки для обработки неожиданных исключений.
Polyspace не проверяет, обрабатываются ли исключения из сторонних библиотек.
Polyspace флаги a main() функция или основная функция задачи, даже если необработанное исключение может не возникнуть.
Polyspace обнаруживает main() функция. Чтобы задать функцию в качестве основной функции задачи, используйте следующие опции компиляции:
-entry-points < имя >
-циклические-задачи < имя >
-interrupts < имя >
Если вы ожидаете нарушения правил, но не видите его, обратитесь к разделу «Стандартные нарушения кодирования не отображаются».
| Группа: Обработка исключений |
| Категория: Требуемая, Частично автоматизированная |