Sinaliza erros de diagnóstico específicos de SOVD como exceção exception safe com código de erro associado para chamadores.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 58783cae6416ProcedênciaPerguntas em aberto (2)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
Sinaliza erros de diagnóstico específicos de SOVD como exceção exception safe com código de erro associado para chamadores.
A classe ara::diag::DiagSovdException serve como um tipo de exceção especializado para Service-Oriented Vehicle Diagnostics (SOVD) e é disparada por classes de diagnóstico no módulo diag para sinalização de erros [SWS_DM_01807]. Ela deriva de ara::core::Exception e é instanciada explicitamente com um ara::core::ErrorCode em situações de erro para transmitir informações de erro ao contexto chamador por meio do desenrolamento de pilha (stack unwinding) de C++ [SWS_DM_01808]. Como restrição central, o construtor é especificado como noexcept, garantindo assim total segurança contra exceções e segurança de thread na criação de objetos.
Contexto
A classe ara::diag::DiagSovdException representa o tipo central de exceção para Service-Oriented Vehicle Diagnostics (SOVD) no módulo de diagnóstico da AUTOSAR Adaptive Platform ([SWS_DM_01807], SWS Diagnostics §8.51.4 «Class: DiagSovdException»). Ela é disparada por classes internas de diagnóstico para indicar estados de erro específicos durante o processamento de requisições SOVD ([SWS_DM_01807], SWS Diagnostics, p. 69).
A classe deriva publicamente da exceção base geral ara::core::Exception ([SWS_DM_01807], SWS Diagnostics §8.51.4). Entre seus parceiros diretos de interação estão as classes funcionais de diagnóstico do módulo diag, que analisam requisições de diagnóstico e disparam exceções em caso de erros, bem como o software aplicativo chamador, que deve interceptar e processar essas exceções. A classe está declarada no cabeçalho ara/diag/diag_sovd_error_domain.h para atender a requisitos arquiteturais de nível superior ([SWS_DM_01808], SWS Diagnostics §8.51.4.1.1.1 «DiagSovdException»).
Ciclo de vida
A instanciação de ara::diag::DiagSovdException ocorre por meio de um construtor que aceita obrigatoriamente um ara::core::ErrorCode como parâmetro err ([SWS_DM_01808], SWS Diagnostics §8.51.4.1.1.1). Esse construtor é declarado como explicit para evitar conversões implícitas de códigos de erro em objetos de exceção, e marcado como noexcept ([SWS_DM_01808]).
Em termos de robustez e concorrência, a especificação assegura que a construção é totalmente exception-safe (exception safe) e thread-safe ([SWS_DM_01808]). Com isso, é garantido que a própria criação do erro não gere exceções adicionais ou inconsistências, mesmo em cenários concorrentes de diagnóstico. O ciclo de vida da exceção segue o desenrolamento padrão de pilha do C++: o objeto é criado dentro de uma função de diagnóstico em caso de erro, propagado pelos níveis de chamada e destruído deterministicamente ao sair do bloco catch de tratamento.
Caminho de utilização
O fluxo típico na utilização de ara::diag::DiagSovdException divide-se nas seguintes etapas:
Uma aplicação inicia uma operação de diagnóstico relacionada a SOVD em uma interface do módulo diag.
O componente de diagnóstico responsável identifica uma condição com falha e gera um ara::core::ErrorCode correspondente a partir do domínio de erros de SOVD ([SWS_DM_01808]).
O componente constrói a exceção por meio de explicit DiagSovdException(err) e a lança ([SWS_DM_01808], [SWS_DM_01807]).
A aplicação intercepta a exceção por meio de catch (const ara::diag::DiagSovdException& ex) ou de forma polimórfica via const ara::core::Exception& para reagir ao estado de erro.
Diagrama de sequência: sequência de chamada e tratamento no disparo de uma DiagSovdException. Fontes: [SWS_DM_01807], [SWS_DM_01808].
Cenários de erro
Como transportador de erros, a própria classe serve ao tratamento de estados de exceção ([SWS_DM_01807]). O fornecimento de um ara::core::ErrorCode inicializado constitui a condição prévia formal para a instanciação ([SWS_DM_01808]). Como o construtor é declarado como noexcept, não ocorrem exceções na própria criação do objeto ([SWS_DM_01808]).
Interpretação: Presume-se que a instância encapsule permanentemente o código de erro fornecido, de modo que manipuladores de erro posteriores possam inspecioná-lo por meio de funções herdadas de ara::core::Exception. Pergunta Q-332b95b96849e379 (aberta) Em configurações de sistema com exceções de C++ desativadas, o componente de diagnóstico presumivelmente deverá preferir mecanismos alternativos de erro, enquanto DiagSovdException representa o caminho dedicado para tratamentos de exceção.
Este guia baseia-se na especificação AUTOSAR Adaptive Platform R25-11 e resume os requisitos para o tratamento de exceções de SOVD.
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