Encapsula códigos de erro do Platform Health Management como exceção thread-safe para operações de módulo com falha.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 9c0b25d6fb92ProcedênciaPerguntas em aberto (2)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
Encapsula códigos de erro do Platform Health Management como exceção thread-safe para operações de módulo com falha.
A classe ara::phm::PhmException serve no Platform Health Management como tipo de exceção central para encapsulamento e encaminhamento de erros específicos do módulo para componentes chamadores. Na detecção de erros, ela é instanciada explicitamente com um ara::core::ErrorCode e lançada para permitir um tratamento estruturado de erros por meio de blocos catch correspondentes [SWS_PHM_01243]. Como condição de contorno essencial, sua construção é especificada como noexcept, thread-safe bem como exception-safe, excluindo erros secundários na geração da exceção [SWS_PHM_01243]. Interpretação: os chamadores tipicamente capturam o objeto por referência para avaliar de forma determinística o código de erro contido, sem alocação dinâmica de memória. Pergunta (aberta)
Contexto
A classe ara::phm::PhmException atua como tipo de exceção dedicado para o Platform Health Management (PHM) dentro da AUTOSAR Adaptive Platform. De acordo com a definição da classe, ela deriva publicamente de ara::core::Exception e representa o elo para comunicar estados de erro do módulo phm a componentes de sistema e de aplicação chamadores através do mecanismo padronizado de exceções C++. Na arquitetura do sistema, a classe interage primariamente entre os serviços operacionais de PHM — que executam funções de monitoramento e detectam estados de erro em caso de violação de regras — e as rotinas superiores de tratamento de erros da aplicação. A integração no modelo fundamental de tratamento de erros de ara::core assegura que relatórios de erros específicos do domínio a partir do Platform Health Management possam ser transportados e processados de maneira uniforme.
Ciclo de vida
O ciclo de vida de uma instância de ara::phm::PhmException começa com a instanciação explícita em caso de erro. De acordo com [SWS_PHM_01243], o objeto é criado através do construtor PhmException(ara::core::ErrorCode errorCode) mediante inclusão do cabeçalho ara/phm/phm_error_domain.h. A criação é declarada como noexcept e apresenta tanto a propriedade «exception safe» quanto «thread-safe» [SWS_PHM_01243]. Isso garante que a instanciação do próprio objeto de exceção ocorra com segurança mesmo sob alta simultaneidade e não dispare exceções secundárias inesperadas em momento algum.
O objeto encapsula o ara::core::ErrorCode fornecido e possui um estado imutável após sua criação. Durante o desenrolamento da pilha (stack unwinding), o objeto de exceção é transportado pelo ambiente de tempo de execução. A destruição ocorre de forma determinística ao sair do bloco catch tratador, segundo as regras padrão do C++. Interpretação: instâncias devem ser criadas habitualmente direto na expressão throw na pilha (stack) e capturadas por referência (const ara::phm::PhmException&), de modo que nenhuma gestão dinâmica de memória seja necessária no lado do chamador. Pergunta Q-37fc47021a78a0db (aberta)
Caminho de utilização
O caminho típico de utilização inicia-se quando uma operação monitorada do Platform Health Management falha ou é constatado um desvio de estado inadmissível. A função de PHM disparadora inicializa, em seguida, um objeto de exceção com o código de erro associado e o lança a partir de [SWS_PHM_01243]. No lado do chamador, o trecho de código protegido é executado dentro de um bloco try-catch. Presumivelmente, as aplicações capturam a exceção especificamente como ara::phm::PhmException ou de forma polimórfica através da classe base ara::core::Exception. Pergunta Q-54638c0dde7d9195 (aberta) No manipulador de exceção, o ara::core::ErrorCode contido é extraído para analisar a causa e iniciar contra-medidas ou estratégias de emergência adequadas.
Diagrama de sequência: fluxo típico desde a detecção de erro no PHM, passando pelo lançamento de ara::phm::PhmException, até a avaliação no manipulador. Fontes: [SWS_PHM_01243].
Cenários de erro
Componente central de ara::phm::PhmException é o transporte do código de erro em tempo de execução. Como pré-condição para a criação do objeto, aplica-se a passagem de um ara::core::ErrorCode válido [SWS_PHM_01243]. Pós-condição da chamada é um objeto de exceção completamente inicializado, o qual disponibiliza o código de erro passado de forma inalterada para consulta.
Como o construtor é especificado explicitamente como noexcept e «exception safe» [SWS_PHM_01243], a ocorrência de exceções durante a própria construção da exceção está excluída. Uma falha na criação do objeto não pode, portanto, ocorrer, o que impede uma interrupção prematura via std::terminate durante o relato do erro. A segurança de threads especificada («thread-safe») protege adicionalmente contra corrupção de dados quando múltiplos threads relatam estados de erro em paralelo por meio de exceções próprias [SWS_PHM_01243]. Cenários de erro não afetam, por conseguinte, a própria classe de exceção, mas refletem as causas de erro funcionais codificadas no ara::core::ErrorCode encapsulado do domínio de erro de PHM.
Este guia foi gerado por uma IA com base na especificação da 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