Служит классом исключений API для инкапсуляции и передачи сообщений об ошибках управления коммуникацией через коды ошибок.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: becb2133e102ПроисхождениеОткрытые вопросы (2)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Служит классом исключений API для инкапсуляции и передачи сообщений об ошибках управления коммуникацией через коды ошибок.
Класс ara::com::ComException служит в AUTOSAR Adaptive центральным классом исключений для сигнализации об ошибках при вызовах коммуникационного API [SWS_CM_11327]. Он инкапсулирует ara::core::ErrorCode, а также создается и генерируется при сбоях операций, причем его конструктор определен как безопасный относительно исключений и не генерирующий исключений [SWS_CM_11328]. Если исключения C++ отключены в наборе инструментов компилятора, соответствующие генерирующие исключения перегрузки API полностью исключаются из разрешения перегрузок. Вызывающие стороны перехватывают объект исключения, чтобы проанализировать содержащийся в нем код ошибки и инициировать меры по обработке ошибок.
Контекст
Класс ara::com::ComException служит в модуле com AUTOSAR Adaptive Platform специализированным классом исключений для сигнализации об ошибках при вызовах коммуникационного API [SWS_CM_11327]. Он открыто наследует от базового класса ara::core::Exception и объявлен как final. Это подчеркивает прямую интеграцию в общую архитектуру обработки ошибок Adaptive Platform. За счет маркировки final класс, вероятно, спроектирован как финальный тип исключения, не предназначенный для дальнейшей иерархии наследования. Вопрос Q-2454b5b73295287b (открытый)
Основная задача ara::com::ComException заключается в инкапсуляции возникшего ошибочного состояния в виде ara::core::ErrorCode и его передаче вызывающим уровням через механизм исключений C++ [SWS_CM_11328]. Объявление и определение предоставляются через заголовок #include "ara/com/com_error_domain.h"[SWS_CM_11328]. В качестве центральных партнеров по взаимодействию выступают использующее прикладное программное обеспечение, внутренние сервисные функции и функции API управления коммуникацией, а также типы домена ошибок ara::core::ErrorCode.
Жизненный цикл
Жизненный цикл объекта ara::com::ComException начинается в реализации функции API управления коммуникацией, как только операция завершается сбоем, после чего исключение инстанцируется и генерируется AUTOSAR_AP_SWS_CommunicationManagement §8.12.5 «Class: ComException». Создание выполняется через явный конструктор, принимающий объект ara::core::ErrorCode, вызвавший ошибку [SWS_CM_11328].
Этот конструктор объявлен с noexcept и обладает свойством exception safe[SWS_CM_11328]. За счет этого гарантируется, что во время конструирования самого объекта исключения не могут возникнуть дополнительные исключения. После генерации с помощью throw объект передается в рамках раскрутки стека, пока не будет связан в подходящем блоке catch вызывающего уровня. Что касается владения, экземпляр автоматически уничтожается на стеке после выхода из блока обработки. Класс не содержит внутренних переходов состояний в смысле конечного автомата; его состояние остается неизменным после инициализации с кодом ошибки.
Путь использования
Типичный сценарий использования описывает последовательность обнаружения ошибки, генерации исключения и последующей обработки:
Прикладная функция вызывает операцию интерфейса ara::com.
Приложение перехватывает исключение в подходящем блоке. Перехват на стороне приложения, вероятно, выполняется по константной ссылке (const ara::com::ComException&) во избежание операций копирования. Вопрос Q-5270e026eeac8be7 (открытый)
Через интерфейс базового класса вызывающая сторона обращается к содержащемуся ara::core::ErrorCode и выполняет диагностические или компенсационные действия [SWS_CM_11328].
В контексте обработки ошибок и конфигурации набора инструментов действуют следующие условия и граничные случаи:
Отключенные исключения C++: если исключения C++ отключены в наборе инструментов компилятора, функции API, создающие и генерирующие ara::com::ComException, согласно [SWS_CORE_10304] не участвуют в разрешении перегрузок AUTOSAR_AP_SWS_CommunicationManagement §8.12.5 «Class: ComException». В этом случае программное обеспечение обработки ошибок обращается к альтернативным механизмам возврата.
Типобезопасность конструктора: поскольку конструктор объявлен как explicit, неявные преобразования типов при передаче ara::core::ErrorCode предотвращаются [SWS_CM_11328].
Иерархический перехват: поскольку ara::com::ComException наследует от ara::core::Exception, вызывающие стороны могут обрабатывать исключения либо специфически как ara::com::ComException, либо обобщенно через обработчики для базового класса.
Настоящее руководство основано на спецификации AUTOSAR Adaptive R25-11. Все сведения и ссылки опираются исключительно на предоставленные выдержки из спецификации.
UML-диаграмма классов
Hohle Dreieckspfeile = Vererbung (zeigt zur Basisklasse); Klicken öffnet die jeweilige Klassenseite.
gemini-3.8-flash-low· 2026-10-13 · Немецкий оригинал