Сигнализирует вызывающей стороне об SOVD-специфических ошибках диагностики в виде безопасного относительно исключений Exception с ассоциированным кодом ошибки.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 58783cae6416ПроисхождениеОткрытые вопросы (2)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Сигнализирует вызывающей стороне об SOVD-специфических ошибках диагностики в виде безопасного относительно исключений Exception с ассоциированным кодом ошибки.
Класс ara::diag::DiagSovdException служит специализированным типом исключения для Service-Oriented Vehicle Diagnostics (SOVD) и генерируется диагностическими классами в модуле diag для сигнализации об ошибках [SWS_DM_01807]. Он наследуется от ara::core::Exception и при ошибочных ситуациях явно инстанцируется с ara::core::ErrorCode для передачи информации об ошибке через развертывание стека C++ в вызывающий контекст [SWS_DM_01808]. В качестве ключевого граничного условия конструктор специфицирован как noexcept и тем самым обеспечивает полную безопасность относительно исключений, а также потокобезопасность при создании объекта.
Контекст
Класс ara::diag::DiagSovdException представляет собой центральный тип исключения для Service-Oriented Vehicle Diagnostics (SOVD) в диагностическом модуле AUTOSAR Adaptive Platform ([SWS_DM_01807], SWS Diagnostics §8.51.4 «Class: DiagSovdException»). Он генерируется внутренними диагностическими классами для индикации специфических состояний ошибок во время обработки SOVD-запросов ([SWS_DM_01807], SWS Diagnostics, с. 69).
Класс публично наследуется от общего базового исключения ara::core::Exception ([SWS_DM_01807], SWS Diagnostics §8.51.4). К его прямым партнерам по взаимодействию относятся функциональные диагностические классы модуля diag, которые анализируют диагностические запросы и генерируют исключения при ошибках, а также вызывающее прикладное программное обеспечение, обязанное перехватывать и обрабатывать такие исключения. Класс объявлен в заголовочном файле ara/diag/diag_sovd_error_domain.h для выполнения вышестоящих архитектурных требований ([SWS_DM_01808], SWS Diagnostics §8.51.4.1.1.1 «DiagSovdException»).
Жизненный цикл
Инстанцирование ara::diag::DiagSovdException осуществляется через конструктор, который в обязательном порядке принимает ara::core::ErrorCode в качестве параметра err ([SWS_DM_01808], SWS Diagnostics §8.51.4.1.1.1). Этот конструктор объявлен как explicit во избежание неявных преобразований кодов ошибок в объекты исключений и помечен как noexcept ([SWS_DM_01808]).
Что касается надежности и параллелизма, спецификация гарантирует, что конструирование является полностью исключитель-безопасным (exception safe) и потокобезопасным ([SWS_DM_01808]). Благодаря этому гарантируется, что создание ошибки даже в сценариях параллельной диагностики не вызовет дальнейших исключений или несоответствий. Жизненный цикл исключения следует стандартной раскрутке стека C++: объект создается в случае ошибки внутри функции диагностики, передается по уровням вызова и детерминированно уничтожается при выходе из обрабатывающего блока catch.
Путь использования
Типичный процесс при использовании ara::diag::DiagSovdException делится на следующие шаги:
Приложение инициирует диагностическую операцию, связанную с SOVD, на интерфейсе модуля diag.
Ответственный компонент диагностики обнаруживает ошибочное условие и создает соответствующий ara::core::ErrorCode из домена ошибок SOVD ([SWS_DM_01808]).
Компонент конструирует исключение с помощью explicit DiagSovdException(err) и генерирует его ([SWS_DM_01808], [SWS_DM_01807]).
Приложение перехватывает исключение через catch (const ara::diag::DiagSovdException& ex) или полиморфно через const ara::core::Exception&, чтобы отреагировать на состояние ошибки.
Диаграмма последовательности: последовательность вызовов и обработки при возникновении DiagSovdException. Источники: [SWS_DM_01807], [SWS_DM_01808].
Сценарии ошибок
В качестве средства переноса ошибок сам класс служит для обработки исключительных состояний ([SWS_DM_01807]). Формальным предусловием для создания является предоставление инициализированного ara::core::ErrorCode ([SWS_DM_01808]). Поскольку конструктор объявлен как noexcept, при самом создании объекта исключения не возникают ([SWS_DM_01808]).
Интерпретация: по всей видимости, экземпляр инкапсулирует переданный код ошибки на постоянной основе, благодаря чему нижестоящие обработчики ошибок могут инспектировать его с помощью унаследованных функций ara::core::Exception. Вопрос Q-332b95b96849e379 (открытый) В конфигурациях системы с отключенными исключениями C++ компонент диагностики, вероятно, отдает предпочтение альтернативным механизмам обработки ошибок, тогда как DiagSovdException представляет собой выделенный путь для обработки исключений.
Данное руководство основано на спецификации AUTOSAR Adaptive Platform R25-11 и обобщает требования к обработке исключений SOVD.
UML-диаграмма классов
Hohle Dreieckspfeile = Vererbung (zeigt zur Basisklasse); Klicken öffnet die jeweilige Klassenseite.
gemini-3.8-flash-low· 2026-10-13 · Немецкий оригинал