Serve para encapsular e encaminhar códigos de erro de diagnóstico como exceção C++ para chamadores de função de nível superior.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 61473cb95c98ProcedênciaPerguntas em aberto (2)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
Serve para encapsular e encaminhar códigos de erro de diagnóstico como exceção C++ para chamadores de função de nível superior.
A classe ara::diag::DiagException atua como um tipo de exceção especializado para sinalizar erros provenientes de classes de diagnóstico da AUTOSAR Adaptive Platform ([SWS_DM_00515]). Ela encapsula um ara::core::ErrorCode e é lançada em caso de erros internos a fim de encaminhar estados de erro de forma estruturada para aplicações chamadoras ([SWS_DM_00516]). Seu construtor é thread-safe e declarado como seguro contra exceções por noexcept ([SWS_DM_00516]).
Contexto
A classe ara::diag::DiagException constitui o tipo de exceção central para o cluster funcional Diagnostics da AUTOSAR Adaptive Platform (SWS Diagnostics §8.11.4 «Class: DiagException», [SWS_DM_00515]). Ela deriva diretamente da classe base ara::core::Exception e é responsável por reportar ao chamador, em caso de exceção, estados de erro que ocorrem dentro das classes de diagnóstico. Os parceiros de interação primários são as classes de diagnóstico disponibilizadoras dentro de ara::diag, que sinalizam situações de exceção, bem como o software aplicativo utilizador, que solicita operações de diagnóstico e intercepta potenciais exceções. Por meio da declaração no arquivo de cabeçalho ara/diag/diag_error_domain.h, a classe de exceção está diretamente associada aos domínios de erro específicos de diagnóstico ([SWS_DM_00516]).
Ciclo de vida
A instanciação de ara::diag::DiagException ocorre mediante a passagem de um código de erro do tipo ara::core::ErrorCode para o construtor ([SWS_DM_00516]). Esse construtor é definido como explicit, o que impede conversões implícitas de tipo a partir de códigos de erro. Além disso, a criação é declarada como noexcept, o que garante a segurança contra exceções ("exception safe") durante a instanciação do objeto e evita que outra exceção seja lançada durante o disparo de um estado de exceção ([SWS_DM_00516]). A segurança de thread ("thread-safe") é garantida para a chamada do construtor ([SWS_DM_00516]). Em relação ao restante do ciclo de vida, o objeto de exceção existe durante o processo de desenrolamento de pilha (stack unwinding) até a conclusão do bloco catch correspondente (Interpretação: a posse e a destruição do objeto de exceção seguem os mecanismos padronizados do ambiente de execução de C++). Pergunta Q-ae485b4ea411b187 (aberta)
Caminho de utilização
O caminho de uso regular de ara::diag::DiagException estende-se desde a detecção de uma situação de erro no subsistema de diagnóstico até a avaliação pela camada de aplicação. O fluxo a seguir ilustra a interação dos componentes envolvidos:
Diagrama de sequência: fluxo típico na ocorrência, no lançamento e no tratamento de uma DiagException. Fontes: [SWS_DM_00515], [SWS_DM_00516].
A aplicação inicia inicialmente uma operação em uma classe funcional do módulo ara::diag. Se, durante o processamento, ocorrer uma condição que exclua um caminho regular de retorno, a classe de diagnóstico cria uma instância de ara::diag::DiagException especificando o ara::core::ErrorCode específico ([SWS_DM_00516]). Essa exceção é lançada por meio do mecanismo normal de exceções de C++. A instância de aplicação chamadora intercepta o objeto em um manipulador de exceções tipado para iniciar medidas adequadas de recuperação ou registro em log.
Cenários de erro
Como classe de sinalização de erros, a ara::diag::DiagException atende prioritariamente ao encaminhamento de estados de erro de diagnóstico. O pré-requisito para a construção bem-sucedida é o fornecimento de um parâmetro err inicializado do tipo ara::core::ErrorCode ([SWS_DM_00516]). A segurança contra exceções do construtor assegura que, mesmo em situações críticas de recursos, nenhuma exceção secundária seja disparada no caminho de construção ([SWS_DM_00516]). Após a instanciação bem-sucedida, o objeto encapsula completamente o código de erro fornecido (Interpretação: o código de erro de diagnóstico concreto presumivelmente deverá ser inspecionado pela lógica de aplicação interceptadora por meio dos mecanismos básicos herdados de ara::core::Exception). Pergunta Q-d20a61b72951321b (aberta)
Este guia foi curado por uma IA com base na especificação AUTOSAR AP 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