Служит типом исключения для сообщения об ошибках Core и инкапсулирует код ошибки для структурированной обработки исключений.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 2b622ea04d25ПроисхождениеОткрытые вопросы (2)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Служит типом исключения для сообщения об ошибках Core и инкапсулирует код ошибки для структурированной обработки исключений.
Класс ara::core::CoreException служит центральным типом исключения для передачи ошибок из функциональной области ara::core и для этого наследует от базового класса Exception. Создание экземпляра обязательно выполняется через конструктор с передачей специфического ErrorCode, инкапсулирующего причину ошибки [SWS_CORE_05212]. В качестве важного граничного условия реализация гарантирует полную потокобезопасность и безопасность исключений, а также абсолютную гарантию noexcept при создании [SWS_CORE_05212]. Вызывающие стороны перехватывают исключение для контролируемой обработки содержащегося в нем состояния ошибки.
Контекст
Класс ara::core::CoreException служит центральным типом исключений для ошибок, возникающих в функциональной области ara::core. Согласно объявлению класса, он открыто наследует от базового класса Exception. Основная задача CoreException заключается в переносе возникшего события ошибки, описываемого объектом ErrorCode, в модель обработки исключений C++. В контексте платформы класс тем самым действует как мост между компонентом инфраструктуры, обнаруживающим ошибку, и вызывающим кодом приложения или платформы. Если операция в ara::core завершается сбоем и интерфейс предусматривает исключение, создается экземпляр CoreException и генерируется сигнал об ошибке. При этом конструктор согласно [SWS_CORE_05212] принимает конкретный объект типа ErrorCode, который инкапсулирует функциональную причину и домен возникшей ошибки. Встраивание в иерархию классов позволяет более высоким архитектурным уровням перехватывать ошибки либо специфически как CoreException, либо обрабатывать их обобщенно через базовый класс Exception.
Контекстная диаграмма: связь CoreException с ErrorCode и базовым классом Exception. Источники: [SWS_CORE_05212]
Жизненный цикл
Жизненный цикл экземпляра CoreException начинается в контексте обнаружения ошибки. Создание выполняется через конструктор explicit CoreException(ErrorCode err) noexcept согласно [SWS_CORE_05212]. С помощью ключевого слова explicit предотвращается неявное преобразование из ErrorCode, что принудительно требует осознанного создания объекта. Важной особенностью конструирования является спецификация в качестве noexcept[SWS_CORE_05212]: создание экземпляра само по себе не может генерировать дальнейших исключений, благодаря чему обеспечивается надежное создание исключений даже в критических состояниях системы. Кроме того, безопасность исключений классифицирована как абсолютно безопасная (exception safe), а операция считается потокобезопасной (thread-safe) [SWS_CORE_05212]. После создания объект исключения обычно передается с помощью throw. Во время раскрутки стека (stack unwinding) исключение передается до тех пор, пока не будет связано подходящим обработчиком исключений. Жизненный цикл завершается выходом из перехватывающего блока, после чего детерминированно выполняется уничтожение объекта исключения.
Путь использования
Обычный путь использования CoreException делится на три последовательные фазы: диагностика, генерация (throw) и перехват (catch). Сначала компонент модуля core выявляет отклонение от требуемого поведения и создает экземпляр соответствующего ErrorCode. Затем создается исключение путем вызова конструктора CoreException(err)[SWS_CORE_05212]. Сразу после этого выполняется выброс объекта в контекст выполнения. На уровне пользователя вызов выполняется в защищенном блоке. При возникновении исключительной ситуации блок catch перехватывает экземпляр — обычно как константную ссылку на CoreException или полиморфно через базовый класс Exception. В обработчике ошибку можно проанализировать, залогировать или устранить. Поскольку заголовочный файл #include "ara/core/core_error_domain.h" задан согласно [SWS_CORE_05212], объявление класса согласованно доступно для модулей приложений.
Сценарии ошибок
В области сценариев сбоев сам CoreException служит носителем сигнала и не генерирует вторичных ошибок во время собственного создания. Поскольку конструктор объявлен как noexcept[SWS_CORE_05212], сценарий сбоя конструирования исключен. Спецификация гарантирует строгую безопасность исключений и потокобезопасность [SWS_CORE_05212], благодаря чему параллельный доступ при создании также остается безопасным. Критический сценарий сбоя возникает на системном уровне тогда, когда сгенерированное исключение CoreException не перехватывается ни в одной вышестоящей области видимости, что в стандартном C++, вероятно, приведет к вызову std::terminate. Вопрос Q-492683ca01bebc7d (открытый) Поэтому разработчики должны гарантировать, что вызовы потенциально генерирующих исключения функций ara::core встроены в подходящие блоки обработки исключений. Другой потенциальный сценарий касается пересылки через границы компонентов, при которой содержащийся ErrorCode должен быть корректно интерпретирован для запуска адекватных мер по устранению ошибки.
Данное руководство было сгенерировано ИИ-ассистентом курирования на основе AUTOSAR R25-11.
UML-диаграмма классов
Hohle Dreieckspfeile = Vererbung (zeigt zur Basisklasse); Klicken öffnet die jeweilige Klassenseite.
gemini-3.8-flash-low· 2026-10-13 · Немецкий оригинал