Основная функция и основная функция задачи должны захватывать как минимум: исключения базового класса из всех используемых сторонних библиотек, 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 < имя >
Если вы ожидаете нарушения правил, но не видите его, обратитесь к разделу «Стандартные нарушения кодирования не отображаются».
Группа: Обработка исключений |
Категория: Требуемая, Частично автоматизированная |