DEENESPTFRRUARHIKOZHNL

classe ara::diag::DiagUdsNrcException

[SWS_DM_00527] Upstream: RS_AP_00119

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

Exception type thrown by Diag classes.

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

Guia do utilizadorGERADO POR IA

Serve como exceção thread-safe para sinalização e encaminhamento de erros de UDS-NRC em classes de diagnóstico.
GERADO POR IA não revisado Modelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 6ef167bbc303 Procedência Perguntas em aberto (2)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão

Serve como exceção thread-safe para sinalização e encaminhamento de erros de UDS-NRC em classes de diagnóstico.

A classe ara::diag::DiagUdsNrcException serve como uma exceção padronizada para a sinalização de erros de UDS-NRC por classes de diagnóstico da AUTOSAR Adaptive Platform (AUTOSAR_AP_SWS_Diagnostics §8.12.4 «Class: DiagUdsNrcException»). Na ocorrência de uma condição de erro correspondente, ela é instanciada com um ara::core::ErrorCode, lançada e interceptada pela aplicação chamadora para tratamento do erro. Como restrição essencial, seu construtor garante conformidade com [SWS_DM_00528] total segurança contra exceções (noexcept), bem como segurança de threads, assegurando uma instanciação de objeto confiável mesmo em contextos concorrentes.

Contexto

A classe ara::diag::DiagUdsNrcException constitui, na AUTOSAR Adaptive Platform, o tipo de exceção central para classes de diagnóstico do módulo diag (AUTOSAR_AP_SWS_Diagnostics §8.12.4 «Class: DiagUdsNrcException»). De acordo com a especificação [SWS_DM_00527], ela define uma interface padronizada de exceção C++ que herda diretamente da classe base de exceção ara::core::Exception. Sua responsabilidade primária consiste em transportar condições de erro do contexto de diagnóstico, especialmente códigos de resposta negativa (Negative Response Codes, NRC) do protocolo UDS, como exceções tipadas por meio da interface de programação. A classe interage estreitamente com ara::core::ErrorCode, que encapsula o código de erro concreto, bem como com as camadas de aplicação chamadoras, que realizam requisições de diagnóstico e devem interceptar eventuais erros ([SWS_DM_00528]). Por meio da declaração no cabeçalho ara/diag/diag_uds_nrc_error_domain.h, a exceção está diretamente vinculada ao domínio de erros de UDS-NRC correspondente ([SWS_DM_00528]).
diag_uds_nrc_context diag_classes Classes ara::diag nrc_exception ara::diag::DiagUdsNrcException diag_classes->nrc_exception cria e lança app Anwendungssoftware nrc_exception->app transmite erro para error_code ara::core::ErrorCode error_code->nrc_exception initialisiert

Diagrama de contexto: integração de DiagUdsNrcException na interação entre código de erro, classes de diagnóstico e software aplicativo. Fontes: [SWS_DM_00527], [SWS_DM_00528], AUTOSAR_AP_SWS_Diagnostics §8.12.4 «Class: DiagUdsNrcException»

Ciclo de vida

O ciclo de vida de uma instância de ara::diag::DiagUdsNrcException começa com sua instanciação explícita por uma classe de diagnóstico ou por uma rotina interna de tratamento de erros. De acordo com [SWS_DM_00528], a classe possui um construtor explicit DiagUdsNrcException(ara::core::ErrorCode err) noexcept;, que aceita o código de erro subjacente como parâmetro err. Esse construtor é explicitamente definido como seguro contra exceções (exception safe) e não lançador (noexcept) ([SWS_DM_00528]), garantindo que nenhuma exceção secundária possa ocorrer durante a instanciação do objeto no caminho de erro. Além disso, a criação é classificada como thread-safe (thread-safe) conforme [SWS_DM_00528]. Após a instanciação, a instância da exceção é tipicamente lançada por valor pelo sistema de tempo de execução C++. A posse do objeto permanece com o ambiente de execução durante o desenrolamento da pilha (stack unwinding), até que a exceção seja capturada e avaliada em um bloco catch correspondente. Ao sair do bloco de tratamento de exceção, o ciclo de vida do objeto se encerra por meio da destruição regular.

Caminho de utilização

O caminho de uso típico engloba a identificação de um erro de UDS-NRC, a criação da exceção e sua posterior avaliação pela aplicação:
  1. Um componente de aplicação chama uma função de diagnóstico ou interface de serviço de uma classe ara::diag.
  2. A classe de diagnóstico constata, durante o processamento, que a requisição não pode ser atendida com êxito e que um UDS-NRC está presente, gerando então um ara::core::ErrorCode correspondente.
  3. Passando esse código de erro, a exceção ara::diag::DiagUdsNrcException é instanciada por meio de seu construtor ([SWS_DM_00528]).
  4. A classe de diagnóstico lança o objeto de exceção para fora do contexto de execução (AUTOSAR_AP_SWS_Diagnostics §8.12.4 «Class: DiagUdsNrcException»).
  5. A aplicação chamadora intercepta a exceção com precisão de tipo como ara::diag::DiagUdsNrcException ([SWS_DM_00527]) ou de forma polimórfica pela classe base ara::core::Exception e acessa as informações de erro.
Fluxo do tratamento de exceções com DiagUdsNrcExceptionAplicaçãoDiag-KlasseDiagUdsNrcExceptionExecutar função de diagnósticoUDS-NRC-Bedingung erkannt, ErrorCode erzeugtDiagUdsNrcException(err)throw DiagUdsNrcExceptioncatch e avaliar erro

Diagrama de sequência: sequência típica de instanciação, lançamento e captura da DiagUdsNrcException. Fontes: [SWS_DM_00527], [SWS_DM_00528], AUTOSAR_AP_SWS_Diagnostics §8.12.4 «Class: DiagUdsNrcException»

Cenários de erro

Como a própria ara::diag::DiagUdsNrcException é um veículo para sinalização de erros, os cenários de erro referem-se principalmente à robustez e à concorrência durante a geração de exceções:
  • Criação robusta de objetos: Por meio da especificação como noexcept e exception safe ([SWS_DM_00528]), é excluída a possibilidade de lançamento de uma exceção secundária durante a construção. Isso evita encerramentos fatais em tempo de execução, como std::terminate, em caminhos críticos de tratamento de erros.
  • Validade do código de erro: Como pré-requisito para a instanciação, um ara::core::ErrorCode válido deve estar disponível ([SWS_DM_00528]). Ele normalmente é originário do domínio de erros definido por ara/diag/diag_uds_nrc_error_domain.h.
  • Processamento paralelo de diagnóstico: como o construtor é especificado como thread-safe ([SWS_DM_00528]), múltiplas threads podem gerar exceções de diagnóstico concorrentemente sem que ocorram race conditions na inicialização do objeto de exceção.

Este guia foi gerado por um sistema de IA com base na especificação AUTOSAR R25-11.

Diagrama de classes UML

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

G nara__diag__DiagUdsNrcException343 DiagUdsNrcException + DiagUdsNrcException() nara__core__Exception792 Exception nara__diag__DiagUdsNrcException343->nara__core__Exception792 nstd__exception10 std::exception nara__core__Exception792->nstd__exception10

Construtores e destrutor

Construct a new DiagException from an ErrorCode.

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

Documentação dos métodos

função DiagUdsNrcException [SWS_DM_00528] Upstream: RS_AP_00119

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

Construct a new DiagException from an ErrorCode.

Header-Datei#include "ara/diag/diag_uds_nrc_error_domain.h"
Scopeclass ara::diag::DiagUdsNrcException
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_00528
Status
valid/unmigrated
Version
AUTOSAR/AP/record/SWS_DM_00528@rel:R25-11#779f01bf
Content hash
779f01bf
Source
https://www.autosar.org/fileadmin/standards/R25-11/AP/AUTOSAR_AP_SWS_Diagnostics.pdf#nameddest=SWS_DM_00528
Status: valid/unmigrated Version: rel:R25-11#55ae2ae1 Versionshistorie & Revisions (1 transition, 7 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_00528@rel:R25-11#55ae2ae1
Point-in-Time History:
Recorded Revisions (7):
  • R25-11rel:R25-11#d0877d832026-09-30
  • R20-11rel:R20-11#cfe41a2e2026-10-14
  • R21-11rel:R21-11#cfe41a2e2026-10-14
  • R22-11rel:R22-11#b5842e552026-10-14
  • R23-11rel:R23-11#ccbb9a702026-10-14
  • R24-11rel:R24-11#55ae2ae12026-10-14
  • R25-11rel:R25-11#55ae2ae12026-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