Serve como exceção thread-safe para sinalização e encaminhamento de erros de UDS-NRC em classes de diagnóstico.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 6ef167bbc303ProcedênciaPerguntas 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]).
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:
Um componente de aplicação chama uma função de diagnóstico ou interface de serviço de uma classe ara::diag.
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.
Passando esse código de erro, a exceção ara::diag::DiagUdsNrcException é instanciada por meio de seu construtor ([SWS_DM_00528]).
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.
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.
gemini-3.8-flash-low· 2026-10-13 · Original em alemão