Служит для инкапсуляции и передачи кодов ошибок диагностики в виде C++-исключения вышестоящим вызывающим сторонам.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 61473cb95c98ПроисхождениеОткрытые вопросы (2)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Служит для инкапсуляции и передачи кодов ошибок диагностики в виде C++-исключения вышестоящим вызывающим сторонам.
Класс ara::diag::DiagException выступает в качестве специализированного типа исключения для сигнализации об ошибках из диагностических классов AUTOSAR Adaptive Platform ([SWS_DM_00515]). Он инкапсулирует ara::core::ErrorCode и генерируется при внутренних ошибках для структурированной передачи состояний ошибок вызывающим приложениям ([SWS_DM_00516]). Его конструктор является потокобезопасным и объявлен безопасным относительно исключений посредством noexcept ([SWS_DM_00516]).
Контекст
Класс ara::diag::DiagException образует центральный тип исключения для функционального кластера AUTOSAR Adaptive Platform Diagnostics (SWS Diagnostics §8.11.4 «Class: DiagException», [SWS_DM_00515]). Он напрямую наследуется от базового класса ara::core::Exception и отвечает за то, чтобы в исключительных случаях сообщать вызывающей стороне о состояниях ошибок, возникающих внутри диагностических классов. Основными партнерами по взаимодействию являются предоставляющие диагностические классы внутри ara::diag, сигнализирующие об исключительных ситуациях, а также использующее прикладное программное обеспечение, которое запрашивает диагностические операции и перехватывает потенциальные исключения. Благодаря объявлению в заголовочном файле ara/diag/diag_error_domain.h класс исключения напрямую связан с предметными областями диагностических ошибок ([SWS_DM_00516]).
Жизненный цикл
Инстанцирование ara::diag::DiagException осуществляется путем передачи кода ошибки типа ara::core::ErrorCode в конструктор ([SWS_DM_00516]). Этот конструктор определен как explicit, что предотвращает неявные преобразования типов из кодов ошибок. Кроме того, создание объявлено как noexcept, что гарантирует безопасность исключений («exception safe») при создании объекта и предотвращает генерацию повторного исключения во время возбуждения исключительного состояния ([SWS_DM_00516]). Для вызова конструктора гарантируется потокобезопасность («thread-safe») ([SWS_DM_00516]). Что касается дальнейшего жизненного цикла, объект исключения существует в течение процесса развертывания стека (stack unwinding) вплоть до завершения соответствующего блока catch (Интерпретация: отношение владения и уничтожение объекта исключения следуют стандартизированным механизмам среды выполнения C++). Вопрос Q-ae485b4ea411b187 (открытый)
Путь использования
Штатный сценарий использования ara::diag::DiagException простирается от обнаружения ошибочной ситуации в диагностической подсистеме до ее обработки на уровне приложения. Следующая последовательность иллюстрирует взаимодействие задействованных компонентов:
Диаграмма последовательности: типичный процесс возникновения, генерации и обработки DiagException. Источники: [SWS_DM_00515], [SWS_DM_00516].
Приложение сначала инициирует операцию над функциональным классом модуля ara::diag. Если во время обработки возникает условие, исключающее штатный путь возврата, диагностический класс создает экземпляр ara::diag::DiagException с указанием конкретного ara::core::ErrorCode ([SWS_DM_00516]). Это исключение генерируется через стандартный механизм исключений C++. Вызывающий экземпляр приложения перехватывает объект в типизированном обработчике исключений, чтобы инициировать соответствующие меры по восстановлению или протоколированию.
Сценарии ошибок
Являясь классом сигнализации об ошибках, ara::diag::DiagException преимущественно обслуживает передачу состояний диагностических ошибок. Предусловием для успешного конструирования выступает предоставление инициализированного параметра err типа ara::core::ErrorCode ([SWS_DM_00516]). Безопасность исключений конструктора гарантирует, что даже в критических по ресурсам ситуациях в пути конструирования не будут вызваны вторичные исключения ([SWS_DM_00516]). После успешного инстанцирования объект полностью инкапсулирует переданный код ошибки (Интерпретация: конкретный код ошибки диагностики, вероятно, проверяется перехватывающей логикой приложения через унаследованные базовые механизмы ara::core::Exception). Вопрос Q-d20a61b72951321b (открытый)
Настоящее руководство было сформировано ИИ на основе спецификации AUTOSAR AP R25-11.
UML-диаграмма классов
Hohle Dreieckspfeile = Vererbung (zeigt zur Basisklasse); Klicken öffnet die jeweilige Klassenseite.
gemini-3.8-flash-low· 2026-10-13 · Немецкий оригинал