Encapsula códigos de erro do Execution Management como exceção C++ para tratamento síncrono de erros.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: e102ca6cc8edProcedênciaPerguntas em aberto (3)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
Encapsula códigos de erro do Execution Management como exceção C++ para tratamento síncrono de erros.
A classe ara::exec::ExecException serve como classe de exceção final do Execution Management para o encapsulamento e sinalização de erros específicos do módulo por meio do mecanismo de exceções C++. Em caso de erro, instâncias são criadas e lançadas com a indicação de um ara::core::ErrorCode através do construtor thread-safe, após o que os locais chamadores as capturam e analisam [SWS_EM_02283]. Como condição de contorno fundamental, a construção é especificada como noexcept, garantindo que a criação do objeto permaneça segura quanto a exceções [SWS_EM_02283]. Exceções não tratadas devem ser evitadas, pois levam à terminação do sistema.
Contexto
A classe ara::exec::ExecException representa a classe de exceção central do módulo Execution Management (exec) dentro da AUTOSAR Adaptive Platform. De acordo com sua especificação, ela serve como encapsulamento para exceções acionadas pelo Execution Management. A declaração de classe a define como final com derivação pública da classe de exceção base padrão ara::core::Exception, integrando-se perfeitamente ao conceito uniforme de tratamento de exceções e de erros da Adaptive Platform. O identificador final exclui qualquer especialização ou subclassificação adicional.
A classe de exceção é declarada no cabeçalho #include "ara/exec/exec_error_domain.h"[SWS_EM_02283]. A responsabilidade funcional primária de ara::exec::ExecException reside no transporte de estados de erro específicos do módulo através do mecanismo de exceções C++. Interpretação: o lançamento desta exceção deve ter relevância sobretudo em ambientes de execução nos quais estados de erro do Execution Management não são propagados puramente por meio de tipos de erro baseados em valor, sendo necessária uma interrupção síncrona do fluxo de controle via exceções C++. Pergunta Q-8faec8c282524965 (aberta)
Ciclo de vida
O ciclo de vida de uma instância de ara::exec::ExecException inicia-se com a construção explícita mediante a passagem de um código de erro. O construtor explicit ExecException(ara::core::ErrorCode errorCode) noexcept cria um novo objeto de exceção que encapsula o código de erro fornecido [SWS_EM_02283]. A marcação como noexcept assegura que a criação do objeto permaneça garantidamente livre de falhas mesmo no contexto de um tratamento de erros já existente e não desencadeie erros secundários em cascata [SWS_EM_02283].
Em termos de segurança de execução, a construção é classificada explicitamente como segura contra exceções («exception safe») e segura para threads («thread-safe») [SWS_EM_02283]. Isso viabiliza a criação confiável de instâncias de exceção entre diferentes threads, sem a necessidade de mecanismos adicionais de sincronização. Após o disparo via throw, o objeto passa para a gerência do sistema de tempo de execução C++. Interpretação: a destruição do objeto de exceção ocorre automaticamente após a saída do bloco catch tratador no decorrer do desenrolamento de pilha (stack unwinding) regular, razão pela qual não é necessária nenhuma gestão explícita do ciclo de vida por parte do chamador. Pergunta Q-ec22ad5f177555aa (aberta)
Caminho de utilização
Um caminho típico de utilização de ara::exec::ExecException abrange a instanciação em caso de erro dentro do Execution Management, bem como a captura controlada no contexto da aplicação chamadora:
Identificação de erro e instanciação: ocorrendo uma condição de exceção no Execution Management, a causa é mapeada em um ara::core::ErrorCode do domínio de erro correspondente e utilizada para a inicialização explícita de uma ara::exec::ExecException[SWS_EM_02283].
Sinalização: a instância de exceção inicializada é lançada, interrompendo o caminho regular de execução e iniciando o desenrolamento da pilha.
Captura: componentes chamadores capturam o objeto de exceção especificamente como const ara::exec::ExecException& ou de forma mais genérica através da classe base polimórfica const ara::core::Exception&.
Avaliação: Interpretação: como o objeto foi construído com um ara::core::ErrorCode[SWS_EM_02283] e herda de ara::core::Exception, o receptor deve extrair o código de erro contido por meio de interfaces da classe base para executar medidas de recuperação ou de registro específicas do módulo. Pergunta Q-d4671c34f5aab6f9 (aberta)
Cenários de erro
Como classe de exceção especializada, ara::exec::ExecException é projetada para representar situações de erro existentes sem induzir novos erros em sua própria utilização. Para a criação, o construtor exige a passagem de um ara::core::ErrorCode[SWS_EM_02283]. Como o construtor é declarado como noexcept, estão excluídos erros de pré-condição na instanciação que poderiam impedir a criação do objeto de exceção [SWS_EM_02283].
Um cenário essencial de falha no nível de sistema reside na captura incompleta de exceções lançadas. Se uma exceção disparada por ara::exec::ExecException permanecer não tratada ao longo da hierarquia de chamadas, o tratamento padrão de tempo de execução do C++ atua, resultando tipicamente na chamada de std::terminate e, com isso, no encerramento prematuro do processo. Componentes de software interativos devem, portanto, assegurar que chamadas para funções do Execution Management potencialmente lançadoras estejam protegidas por blocos try-catch adequados.
Este guia foi gerado por uma IA com base na especificação AUTOSAR Adaptive Platform 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