Encapsula códigos de erro do State Management para propagação e tratamento de erros funcionais críticos como exceção C++.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 72647117def3ProcedênciaPerguntas em aberto (1)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
Encapsula códigos de erro do State Management para propagação e tratamento de erros funcionais críticos como exceção C++.
A classe ara::sm::SmException serve para a propagação de situações excepcionais que ocorrem durante operações do State Management [SWS_SM_81242]. Ela deriva de ara::core::Exception e encapsula um ara::core::ErrorCode específico para a identificação exata da causa do erro ocorrido. Sua criação é feita por meio de um construtor explícito, que é especificado como thread-safe e seguro contra exceções [SWS_SM_81243]. Aplicações chamadoras capturam o objeto de forma estruturada para analisar o código de erro contido e iniciar as medidas de recuperação correspondentes.
Contexto
A classe ara::sm::SmException atua como exceção central para o cluster funcional State Management na AUTOSAR Adaptive Platform [SWS_SM_81242]. Ela é definida no cabeçalho ara/sm/sm_error_domain.h e deriva publicamente da classe de exceção fundamental da plataforma ara::core::ExceptionAUTOSAR_AP_SWS_StateManagement §8.1.4 «Class: SmException». Dentro do documento, a especificação da classe é mantida com o status DRAFT [SWS_SM_81242].
No contexto arquitetural, a classe conecta três papéis centrais: o State Management como instância disparadora em caso de falha em operações de estado, a aplicação Adaptive chamadora como tratador, bem como a infraestrutura básica de ara::core, que fornece a interface comum para o tratamento de erros. Como portadora de estados de erro, ela serve para repassar situações de erro do módulo sm de forma síncrona a instâncias de controle de nível superior por meio do mecanismo de exceção C++.
Ciclo de vida
A instanciação de ara::sm::SmException ocorre explicitamente por meio do construtor SmException(ara::core::ErrorCode errorCode)[SWS_SM_81243]. Este construtor é declarado como noexcept e apresenta tanto a propriedade de segurança contra exceções (exception safe) quanto de segurança para threads (thread-safe) AUTOSAR_AP_SWS_StateManagement §8.1.4.1.1.1 «SmException». Isso garante que a própria criação do objeto de exceção não falhe nem lance exceções secundárias, mesmo que seja criado em contextos de execução concorrentes.
Após a criação, a instância é habitualmente lançada por valor (by value) e capturada no contexto chamador como referência a objetos constantes (const ara::sm::SmException& ou polimorficamente como const ara::core::Exception&). Como a especificação não prescreve destrutores específicos ou rotinas manuais de limpeza, a destruição do objeto de exceção deve, por interpretação, seguir integralmente a semântica padrão do C++ e os mecanismos da classe base ara::core::Exception assim que o bloco de tratamento responsável for encerrado. Pergunta Q-85b1fd2f6082db8e (aberta)
Caminho de utilização
O fluxo típico começa em um componente de aplicação ou de plataforma que envia uma solicitação de controle de estado ao State Management. Se a mudança de estado solicitada não puder ser realizada internamente ou se houver um erro excepcional grave, o State Management instancia um exemplar de ara::sm::SmException sob indicação do respectivo ara::core::ErrorCode[SWS_SM_81243].
Diagrama de sequência: Sinalização e tratamento típicos de um erro por meio de SmException no State Management. Fontes: [SWS_SM_81242], [SWS_SM_81243].
O componente chamador captura a exceção lançada em um bloco catch correspondente. Por meio dos métodos herdados da classe base ara::core::Exception, a aplicação pode inspecionar o ara::core::ErrorCode encapsulado a fim de mapear semanticamente a causa do erro e introduzir medidas direcionadas para correção de falhas ou restauração do estado do sistema.
Cenários de erro
A classe ara::sm::SmException não representa, por si mesma, um elemento operacional propenso a erros, mas é o objeto portador primário para situações excepcionais dentro do State Management [SWS_SM_81242]. Uma pré-condição essencial para a criação é o fornecimento de um objeto ara::core::ErrorCode inicializado na chamada do construtor [SWS_SM_81243].
Se uma ara::sm::SmException lançada não for capturada por nenhum tratador compatível na pilha de chamadas, isso levará, segundo as regras padrão do C++, à chamada de std::terminate e, portanto, ao encerramento descontrolado do processo afetado. Em implementações que prescrevem a dispensa de exceções em favor de ara::core::Result, o lançamento é evitado; no entanto, se o caminho de exceção estiver disponível, o encapsulamento assegura que o código de erro original seja transportado sem alterações para o diagnóstico de erros.
Este guia de classe é baseado na especificação AUTOSAR Adaptive R25-11. Todas as informações fundamentam-se nos pontos de especificação referenciados.
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