DEENESPTFRRUARHIKOZHNL

класс ara::diag::DiagReportingException

[SWS_DM_00987] Upstream: RS_AP_00119

class DiagReportingException :              public ara::core::Exception {...};

Exception type thrown by Diag classes.

Header-Datei#include "ara/diag/diag_error_domain.h"
Forwarding-Header#include "ara/diag/diag_fwd.h"
Scopenamespace ara::diag
Basisklasse(n)ara::core::Exception

Руководство пользователяСОЗДАНО ИИ

Синхронно сигнализирует вызывающей стороне об ошибках при диагностических операциях в виде исключения с кодом ошибки.
СОЗДАНО ИИ не проверено Модель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: a149cf644e7f Происхождение Открытые вопросы (2)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал

Синхронно сигнализирует вызывающей стороне об ошибках при диагностических операциях в виде исключения с кодом ошибки.

Класс исключения ara::diag::DiagReportingException служит для синхронной сигнализации о состояниях ошибок, возникающих при операциях внутри диагностических классов Adaptive Platform (AUTOSAR_AP_SWS_Diagnostics §8.11.8 «Class: DiagReportingException»). Он явно инстанцируется с конкретным ara::core::ErrorCode и передает его вызывающему приложению для анализа причин ошибки [SWS_DM_00988]. В качестве ключевого граничного условия его конструктор специфицирован как noexcept, exception safe и thread-safe, что гарантирует безошибочное создание даже в контекстах параллельного выполнения. Необработанных экземпляров необходимо избегать, так как они приводят к немедленному аварийному завершению программы.

Контекст

Класс ara::diag::DiagReportingException образует центральный класс исключений для процедур отправки отчетов и сообщений внутри функционального кластера Diagnostics (AUTOSAR_AP_SWS_Diagnostics §8.11.8 «Class: DiagReportingException»). Он определен как публичная специализация ara::core::Exception и представляет конкретные состояния ошибок, возникающие при взаимодействии с диагностическими классами [SWS_DM_00987]. В приложении AUTOSAR Adaptive исключение выступает связующим звеном между внутренними диагностическими сервисами и вызывающим прикладным ПО: если во время диагностического сообщения возникает ошибка, DiagReportingException инкапсулирует это состояние и синхронно передает его по стеку вызовов вызывающей стороне. К основным партнерам по взаимодействию относятся связанные с диагностикой API-классы модуля diag, инстанцирующие и возбуждающие исключение в случае ошибки, а также вышестоящие процедуры обработки ошибок приложения, которые перехватывают и обрабатывают диагностическую ошибку.

Жизненный цикл

Инстанцирование ara::diag::DiagReportingException осуществляется явно путем передачи кода ошибки типа ara::core::ErrorCode в конструктор [SWS_DM_00988]. Объявление конструктора как explicit предотвращает неявные преобразования кодов ошибок в объекты исключений и гарантирует, что экземпляры исключений всегда создаются осознанно [SWS_DM_00988].

Поскольку конструктор снабжен спецификацией noexcept, гарантируется, что при самом создании объекта не могут возникнуть дополнительные исключения [SWS_DM_00988]. Это имеет решающее значение для путей обработки ошибок, предотвращая каскадирование исключений во время обработки сбоев. Кроме того, процесс конструирования явно классифицирован как безопасный относительно исключений (exception safe) и потокобезопасный (thread-safe) [SWS_DM_00988]. Таким образом, несколько потоков могут параллельно и без взаимных блокировок создавать отдельные объекты исключений.

Жизненный цикл исключения привязан к развертыванию стека C++ (stack unwinding): после создания на стеке вызовов объект распространяется механизмом throw в соответствующий блок catch. С выходом из обработчика исключений время жизни объекта заканчивается, а занятые ресурсы автоматически освобождаются.

Путь использования

Штатный путь использования активируется, как только диагностическое сообщение или операция внутри Adaptive Platform завершается неудачей. В типичном сценарии выполняющий диагностический класс распознает недопустимое условие и создает соответствующий ara::core::ErrorCode. Вместо передачи ошибки исключительно в виде возвращаемого значения, в синхронном пути исключений конструируется и генерируется объект типа ara::diag::DiagReportingException [SWS_DM_00987].

Обработка исключений с помощью DiagReportingExceptionПриложениеara::diag KomponenteDiagReportingExceptionDiagnoseoperation aufrufenFehlerzustand erkennenara::core::ErrorCode erzeugenКонструирование с ErrorCodeГенерация исключения (throw)catch (const DiagReportingException&)Fehlercode auswerten

Диаграмма последовательности: типичный процесс создания исключения и обработки ошибок с DiagReportingException. Источники: [SWS_DM_00987], [SWS_DM_00988], AUTOSAR_AP_SWS_Diagnostics §8.11.8 «Class: DiagReportingException».

На стороне получателя логика приложения перехватывает исключение. Предпочтительно это делается по ссылке на константные объекты (const ara::diag::DiagReportingException& или полиморфно через const ara::core::Exception&). Затем обработчик извлекает внедренный ara::core::ErrorCode, чтобы определить точную причину ошибки и предпринять соответствующие ситуации меры по восстановлению.

Сценарии ошибок

Сценарии ошибок, связанные с ara::diag::DiagReportingException, касаются прежде всего интерпретации переданных данных об ошибке и отсутствия надлежащей обработки исключений.

Конструктор обязательно требует допустимый ara::core::ErrorCode [SWS_DM_00988]. За счет подключения заголовочного файла ara/diag/diag_error_domain.h [SWS_DM_00988] переданный код ошибки, по всей видимости, преимущественно происходит из специфической предметной области диагностических ошибок. Вопрос Q-cb8a197542857807 (открытый) Основной сценарий ошибки в архитектуре приложения заключается в неполном перехвате исключения: если сгенерированное исключение DiagReportingException не обрабатывается подходящим блоком catch вдоль стека вызовов, это неизбежно приводит к вызову std::terminate и тем самым к аварийному завершению соответствующего процесса платформы. Поскольку сам конструктор объявлен как noexcept [SWS_DM_00988], инстанцирование исключения не может завершиться сбоем из-за внутренней нехватки ресурсов. Поэтому разработчики должны гарантировать, что вызывающие компоненты готовы к возникновению DiagReportingException, в частности при использовании API, сигнализирующих об ошибках через исключения вместо ara::core::Result.

Данное руководство было сгенерировано ИИ на основе спецификации AUTOSAR Adaptive R25-11.

UML-диаграмма классов

Hohle Dreieckspfeile = Vererbung (zeigt zur Basisklasse); Klicken öffnet die jeweilige Klassenseite.

G nara__diag__DiagReportingException911 DiagReportingException + DiagReportingException() nara__core__Exception792 Exception nara__diag__DiagReportingException911->nara__core__Exception792 nstd__exception10 std::exception nara__core__Exception792->nstd__exception10

Конструкторы и деструктор

DiagReportingException функция

Construct a new DiagException from an ErrorCode.

explicit DiagReportingException (ara::core::ErrorCode err) noexcept;

Документация методов

функция DiagReportingException [SWS_DM_00988] Upstream: RS_AP_00119

explicit DiagReportingException (ara::core::ErrorCode err) noexcept;

Construct a new DiagException from an ErrorCode.

Header-Datei#include "ara/diag/diag_error_domain.h"
Scopeclass ara::diag::DiagReportingException
Exception-Sicherheitexception safe
Thread-Sicherheitthread-safe

Parameter (in)

ParameterBeschreibung
errthe ErrorCode

Request a governed re-review of this record. The record is not changed immediately.

Record
AUTOSAR/AP/record/SWS_DM_00988
Status
valid/unmigrated
Version
AUTOSAR/AP/record/SWS_DM_00988@rel:R25-11#8cc1bb15
Content hash
8cc1bb15
Source
https://www.autosar.org/fileadmin/standards/R25-11/AP/AUTOSAR_AP_SWS_Diagnostics.pdf#nameddest=SWS_DM_00988
Status: valid/unmigrated Version: rel:R25-11#9465de9a Versionshistorie & Revisions (1 transition, 4 revision)
Current State
valid/unmigrated
Reason
mechanically backfilled by migriere_status_backfill.py -- no per-field curation history exists yet for this record
Campaign
2026-08-13-status-backfill
Active Version
AUTOSAR/AP/record/SWS_DM_00988@rel:R25-11#9465de9a
Point-in-Time History:
Recorded Revisions (4):
  • R25-11rel:R25-11#431097f22026-09-30
  • R23-11rel:R23-11#85d295e12026-10-14
  • R24-11rel:R24-11#9465de9a2026-10-14
  • R25-11rel:R25-11#9465de9a2026-10-14 active
DateActorTransitionReason / RationaleCampaign
2026-08-13toolnone → valid/unmigratedmechanically backfilled by migriere_status_backfill.py -- no per-field curation history exists yet for this record2026-08-13-status-backfill