DEENESPTFRRUARHIKOZHNL

classe 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

Guia do utilizadorGERADO POR IA

Sinaliza erros em operações de diagnóstico de forma síncrona como exceção com código de erro para o chamador.
GERADO POR IA não revisado Modelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: a149cf644e7f Procedência Perguntas em aberto (2)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão

Sinaliza erros em operações de diagnóstico de forma síncrona como exceção com código de erro para o chamador.

A classe de exceção ara::diag::DiagReportingException serve para a sinalização síncrona de estados de erro que ocorrem durante operações dentro de classes de diagnóstico da Adaptive Platform (AUTOSAR_AP_SWS_Diagnostics §8.11.8 «Class: DiagReportingException»). Ela é instanciada explicitamente com um ara::core::ErrorCode específico e o transporta para a aplicação chamadora [SWS_DM_00988] para análise da causa do erro. Como restrição central, seu construtor é especificado como noexcept, exception safe e thread-safe, garantindo uma criação sem erros mesmo em contextos de execução concorrentes. Instâncias não tratadas devem ser evitadas, pois levam ao encerramento imediato do programa.

Contexto

A classe ara::diag::DiagReportingException constitui a classe de exceção central para procedimentos de notificação e relatório dentro do cluster funcional de diagnóstico (AUTOSAR_AP_SWS_Diagnostics §8.11.8 «Class: DiagReportingException»). Ela é definida como uma especialização pública de ara::core::Exception e representa estados de erro específicos que ocorrem durante a interação com classes de diagnóstico [SWS_DM_00987]. Em uma aplicação AUTOSAR Adaptive, a exceção atua como elo de ligação entre os serviços de diagnóstico internos e o software aplicativo chamador: se ocorrer um erro durante uma notificação de diagnóstico, DiagReportingException encapsula esse estado e o transporta sincronicamente pela pilha de chamadas até o chamador. Entre os parceiros primários de interação estão as classes de API de diagnóstico do módulo diag, que instanciam e disparam a exceção em caso de erro, bem como rotinas de tratamento de erros de nível superior da aplicação, que capturam e processam o erro de diagnóstico.

Ciclo de vida

A instanciação de ara::diag::DiagReportingException ocorre explicitamente pela passagem de um código de erro do tipo ara::core::ErrorCode para o construtor [SWS_DM_00988]. A declaração do construtor como explicit impede conversões implícitas de códigos de erro em objetos de exceção e assegura que instâncias de exceção sejam sempre criadas de forma deliberada [SWS_DM_00988].

Como o construtor possui a especificação noexcept, é garantido que nenhuma outra exceção possa ocorrer durante a própria criação do objeto [SWS_DM_00988]. Isso é essencial para caminhos de erro a fim de evitar uma cascata de exceções durante o tratamento de erros. Além disso, o processo de construção é classificado explicitamente como seguro contra exceções (exception safe) e seguro para threads (thread-safe) [SWS_DM_00988]. Desse modo, múltiplas threads podem criar objetos de exceção separados em paralelo e sem bloqueios mútuos.

O ciclo de vida da exceção está vinculado ao desenrolamento de pilha (stack unwinding) de C++: após a criação na pilha de chamadas, o objeto é propagado pelo mecanismo throw para o bloco catch responsável. Ao sair do manipulador de exceção, o tempo de vida do objeto termina e os recursos alocados são liberados automaticamente.

Caminho de utilização

O caminho de uso regular inicia-se assim que uma notificação ou operação de diagnóstico falha dentro da Adaptive Platform. No fluxo típico, a classe de diagnóstico em execução identifica uma condição não permitida e cria o ara::core::ErrorCode adequado. Em vez de apenas transmitir o erro como valor de retorno, um objeto do tipo ara::diag::DiagReportingException é construído e lançado no caminho síncrono de exceção [SWS_DM_00987].

Tratamento de exceções com DiagReportingExceptionAplicaçãoara::diag KomponenteDiagReportingExceptionDiagnoseoperation aufrufenFehlerzustand erkennenara::core::ErrorCode erzeugenConstrução com ErrorCodeDisparar exceção (throw)catch (const DiagReportingException&)Fehlercode auswerten

Diagrama de sequência: fluxo típico da criação de exceção e do tratamento de erros com DiagReportingException. Fontes: [SWS_DM_00987], [SWS_DM_00988], AUTOSAR_AP_SWS_Diagnostics §8.11.8 «Class: DiagReportingException».

No lado receptor, a lógica da aplicação intercepta a exceção. Isso ocorre preferencialmente por referência para objetos constantes (const ara::diag::DiagReportingException& ou de forma polimórfica via const ara::core::Exception&). Em seguida, o manipulador extrai o ara::core::ErrorCode embutido para identificar a causa exata do erro e iniciar medidas de recuperação adequadas à situação.

Cenários de erro

Os cenários de falha relacionados a ara::diag::DiagReportingException dizem respeito principalmente à interpretação dos dados de erro fornecidos e à ausência de um tratamento adequado de exceções.

O construtor exige obrigatoriamente um ara::core::ErrorCode válido [SWS_DM_00988]. Devido à inclusão do arquivo de cabeçalho ara/diag/diag_error_domain.h [SWS_DM_00988], o código de erro passado presumivelmente deve ser proveniente do domínio de erros de diagnóstico específico. Pergunta Q-cb8a197542857807 (aberta) Um cenário de erro primário na arquitetura da aplicação reside na interceptação incompleta da exceção: se uma DiagReportingException lançada não for tratada por um bloco catch adequado ao longo da pilha de chamadas, isso levará inevitavelmente à chamada de std::terminate e, consequentemente, à queda do processo da plataforma correspondente. Como o próprio construtor é declarado noexcept [SWS_DM_00988], a instanciação da exceção não pode falhar por falta interna de recursos. Os desenvolvedores devem, portanto, assegurar que os componentes chamadores estejam preparados para a ocorrência de DiagReportingException, especialmente ao utilizar APIs que sinalizam erros via exceções em vez de ara::core::Result.

Este guia foi gerado por uma IA com base na especificação AUTOSAR Adaptive R25-11.

Diagrama de classes 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

Construtores e destrutor

Construct a new DiagException from an ErrorCode.

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

Documentação dos métodos

função 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#0f9eb0e9
Content hash
0f9eb0e9
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