Serve como classe base para todas as exceções AUTOSAR e encapsula um código de erro thread-safe para avaliação.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: d4eaa8466f70ProcedênciaPerguntas em aberto (1)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
Serve como classe base para todas as exceções AUTOSAR e encapsula um código de erro thread-safe para avaliação.
A classe ara::core::Exception serve como classe base comum para todos os tipos de exceção da Adaptive Platform e incorpora um ErrorCode na hierarquia de exceções padronizada de C++ [SWS_CORE_00611]. Na ocorrência de erros, ela transporta esse código de erro de forma thread-safe para um tratador, que pode avaliá-lo por meio de Error() ou do método padrão derivado what()[SWS_CORE_00613]. Todas as operações são estritamente seguras contra exceções e declaradas como noexcept. Para excluir o fatiamento inadvertido de objetos (object slicing) em tipos derivados, as operações de cópia são executadas como protegidas.
Contexto
A classe ara::core::Exception serve como classe base comum para todos os tipos de exceção dentro da AUTOSAR Adaptive Platform. Ela estabelece uma ponte entre o tratamento de exceções da biblioteca padrão do C++ e o modelo de erros do AUTOSAR: por um lado, deriva publicamente de std::exception e substitui sua função-membro virtual what()[SWS_CORE_00612]; por outro lado, transporta um objeto de erro incorporado do tipo ara::core::ErrorCode[SWS_CORE_00611], [SWS_CORE_00613].
A responsabilidade principal de ara::core::Exception consiste em fornecer informações de erro de forma estruturada através dos limites de chamada no caso de exceção. Interpretação: supõe-se que a classe foi concebida como raiz comum para classes de exceção da plataforma específicas do domínio; suas operações de cópia são especificadas como protected para evitar o fatiamento inadvertido de objetos (object slicing) em instâncias derivadas [SWS_CORE_00614], [SWS_CORE_00618]. Pergunta Q-20ffec7888b9e724 (aberta)
A criação de uma ara::core::Exception exige obrigatoriamente a especificação explícita de um código de erro na chamada do construtor [SWS_CORE_00611]. Esse construtor é definido como noexcept e, portanto, não lança exceções por si próprio.
A posse e as possibilidades de cópia seguem regras estritas de proteção: tanto o construtor de cópia [SWS_CORE_00618] quanto o operador de atribuição por cópia [SWS_CORE_00614] possuem o modificador de acesso protected. Isso impede que subclasses polimórficas sejam copiadas de forma incompleta por meio de interfaces da classe base. Para a transferência de recursos, por outro lado, o construtor de movimentação [SWS_CORE_00615] e o operador de atribuição por movimentação com qualificador de referência &[SWS_CORE_00616] estão disponíveis publicamente como noexcept=default.
A destruição ocorre de forma determinística por meio do destrutor virtual [SWS_CORE_00617], que é especificado como noexcept override=default e garante a limpeza adequada de instâncias derivadas. Acessos concorrentes de leitura aos métodos, bem como a instanciação, são indicados como thread-safe [SWS_CORE_00611], [SWS_CORE_00612], [SWS_CORE_00613].
Caminho de utilização
O fluxo regular abrange desde a detecção do erro, passando pelo lançamento da exceção, até o diagnóstico estruturado no tratador de exceções:
Criação e lançamento: um componente detecta uma situação de erro, instancia a exceção com o ErrorCode[SWS_CORE_00611] adequado e lança o objeto via throw.
Interceptação: um bloco de nível superior intercepta o objeto por referência (por exemplo, como const ara::core::Exception& ou polimorficamente como const std::exception&).
Saída de texto padronizada: por meio de what(), pode-se obter uma explicação textual como cadeia de caracteres terminada em nulo [SWS_CORE_00612]. Todas as garantias de tempo de vida de std::exception::what permanecem totalmente preservadas.
Verificação detalhada de erros: por meio da função-membro Error(), o tratador acessa uma referência constante do ErrorCode incorporado [SWS_CORE_00613], a fim de avaliar domínios de erro e códigos específicos do sistema de maneira automatizada.
Como a própria ara::core::Exception representa o objeto portador de estados de erro, todas as operações são projetadas para a máxima resiliência a falhas:
Condições de tempo de vida: a referência disponibilizada por Error() vincula-se ao objeto de exceção [SWS_CORE_00613]; ela não deve ser usada além do tempo de vida da Exception. Para o retorno de what(), aplicam-se as regras de tempo de vida da biblioteca padrão [SWS_CORE_00612].
Prevenção de estados de objeto inválidos: o encapsulamento das operações de cópia no escopo protected impede que subclasses polimórficas se tornem inadvertidamente inconsistentes devido ao fatiamento (slicing) [SWS_CORE_00614], [SWS_CORE_00618].
Este guia baseia-se na especificação AUTOSAR Adaptive Platform Release R25-11.
Return the explanatory string. This function overrides the virtual function std::exception:: what. All guarantees about the lifetime of the returned pointer that are given for std::exception::what are preserved. ≙ std::exception::
Return the explanatory string. This function overrides the virtual function std::exception:: what. All guarantees about the lifetime of the returned pointer that are given for std::exception::what are preserved.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 1b4e9bb17f9aProcedência
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
A função-membro what da classe ara::core::Exception serve para obter de forma síncrona uma cadeia de carateres explicativa sobre o erro ocorrido [SWS_CORE_00612]. Substitui a função virtual std::exception::what e retorna um ponteiro para uma cadeia de carateres terminada em nulo (const char*) [SWS_CORE_00612].
Uso e tempo de vida
A função não espera parâmetros de entrada. No que diz respeito à validade do ponteiro retornado, mantêm-se todas as garantias que se aplicam a std::exception::what[SWS_CORE_00612]. Para poder utilizar a função, é necessário incluir o ficheiro de cabeçalho ara/core/exception.h[SWS_CORE_00612].
Tratamento de erros e simultaneidade
Segurança face a exceções: a operação é declarada como noexcept e especificada como segura face a exceções (exception safe); não lança exceções por si própria [SWS_CORE_00612].
Concorrência: a execução está especificada como segura para threads (thread-safe) [SWS_CORE_00612]. As chamadas podem, portanto, ser efetuadas em segurança a partir de threads paralelas.
Esta nota de utilização foi gerada automaticamente.
gemini-3.8-flash-low· 2026-10-13 · Original em alemão