Инкапсулирует коды ошибок Execution Management в виде исключения C++ для синхронной обработки ошибок.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: e102ca6cc8edПроисхождениеОткрытые вопросы (3)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Инкапсулирует коды ошибок Execution Management в виде исключения C++ для синхронной обработки ошибок.
Класс ara::exec::ExecException служит финальным классом исключений Execution Management для инкапсуляции и сигнализации ошибок, специфичных для модуля, через механизм исключений C++. Экземпляры создаются и выбрасываются в случае ошибки с указанием ara::core::ErrorCode через потокобезопасный конструктор, после чего вызывающие компоненты перехватывают и анализируют их [SWS_EM_02283]. Фундаментальным граничным условием является то, что конструирование специфицировано как noexcept, благодаря чему создание объекта гарантированно остается безопасным относительно исключений [SWS_EM_02283]. Необработанных исключений следует избегать, так как они приводят к завершению работы системы.
Контекст
Класс ara::exec::ExecException представляет собой центральный класс исключений модуля Execution Management (exec) в рамках AUTOSAR Adaptive Platform. Согласно своей спецификации он служит инкапсуляцией для исключений, генерируемых Execution Management. В объявлении класса он определен как final с открытым наследованием от стандартного базового класса исключений ara::core::Exception, благодаря чему он бесшовно интегрируется в единую концепцию обработки исключений и ошибок Adaptive Platform. Идентификатор final исключает дальнейшую специализацию или создание подклассов.
Класс исключения объявляется в заголовочном файле #include "ara/exec/exec_error_domain.h"[SWS_EM_02283]. Основная функциональная ответственность ara::exec::ExecException заключается в передаче специфичных для модуля ошибочных состояний через механизм исключений C++. Интерпретация: выбрасывание этого исключения, вероятно, актуально прежде всего в средах выполнения, где состояния ошибок Execution Management распространяются не только через типы ошибок на основе значений, но и требуется синхронное прерывание потока управления через исключения C++. Вопрос Q-8faec8c282524965 (открытый)
Жизненный цикл
Жизненный цикл экземпляра ara::exec::ExecException начинается с явного конструирования с передачей кода ошибки. Конструктор explicit ExecException(ara::core::ErrorCode errorCode) noexcept создает новый объект исключения, инкапсулирующий переданный код ошибки [SWS_EM_02283]. Маркировка как noexcept гарантирует, что создание объекта даже в контексте уже выполняющейся обработки ошибок гарантированно пройдет без сбоев и не вызовет каскадных вторичных ошибок [SWS_EM_02283].
В отношении безопасности выполнения конструирование явно классифицировано как безопасное относительно исключений («exception safe») и потокобезопасное («thread-safe») [SWS_EM_02283]. Это обеспечивает надежное создание экземпляров исключений из различных потоков без необходимости дополнительных механизмов синхронизации. После вызова через throw объект переходит под управление среды выполнения C++. Интерпретация: уничтожение объекта исключения происходит автоматически после выхода из обрабатывающего блока catch в процессе стандартной раскрутки стека, поэтому явное управление жизненным циклом со стороны вызывающего кода не требуется. Вопрос Q-ec22ad5f177555aa (открытый)
Путь использования
Типовой сценарий использования ara::exec::ExecException включает инстанцирование в случае ошибки внутри Execution Management, а также контролируемый перехват в контексте вызывающего приложения:
Идентификация ошибки и инстанцирование: при возникновении исключительной ситуации в Execution Management ее причина отображается в ara::core::ErrorCode соответствующего домена ошибок и используется для явной инициализации ara::exec::ExecException[SWS_EM_02283].
Сигнализация: Инициализированный экземпляр исключения выбрасывается, прерывая регулярный путь выполнения и инициируя развертывание стека.
Перехват: Вызывающие компоненты перехватывают объект исключения либо целенаправленно как const ara::exec::ExecException&, либо в более общем виде через полиморфный базовый класс const ara::core::Exception&.
Анализ: Интерпретация: поскольку объект был сконструирован с ara::core::ErrorCode[SWS_EM_02283] и наследует от ara::core::Exception, получатель, вероятно, извлекает содержащийся код ошибки через интерфейсы базового класса для выполнения модулеспецифичных мер по восстановлению или протоколированию. Вопрос Q-d4671c34f5aab6f9 (открытый)
Сценарии ошибок
Будучи специализированным классом исключений, ara::exec::ExecException спроектирован для отражения существующих ошибочных ситуаций без создания новых ошибок при собственном использовании. Для создания конструктор требует передачи ara::core::ErrorCode[SWS_EM_02283]. Поскольку конструктор объявлен как noexcept, исключены ошибки предусловий при инстанцировании, которые могли бы помешать созданию объекта исключения [SWS_EM_02283].
Существенный сценарий ошибки на системном уровне заключается в неполном перехвате выброшенных исключений. Если инициированное ara::exec::ExecException исключение остается необработанным по иерархии вызовов, срабатывает стандартная обработка времени выполнения C++, что обычно приводит к вызову std::terminate и тем самым к преждевременному аварийному завершению процесса. Взаимодействующие программные компоненты должны поэтому гарантировать, что вызовы потенциально выбрасывающих функций Execution Management защищены надлежащими блоками try-catch.
Настоящее руководство сгенерировано ИИ на основе спецификации AUTOSAR Adaptive Platform R25-11.
UML-диаграмма классов
Hohle Dreieckspfeile = Vererbung (zeigt zur Basisklasse); Klicken öffnet die jeweilige Klassenseite.
gemini-3.8-flash-low· 2026-10-13 · Немецкий оригинал