Gere os códigos de erro do cluster ara::core, traduz-os em mensagens de erro e lança as exceções correspondentes.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 8500dff6850eProcedênciaPerguntas em aberto (1)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
Gere os códigos de erro do cluster ara::core, traduz-os em mensagens de erro e lança as exceções correspondentes.
A classe ara::core::CoreErrorDomain representa o domínio de erro para erros do cluster funcional ara::core e mapeia códigos de erro numéricos para mensagens de texto descritivas [SWS_CORE_05243]. Além disso, através de ThrowAsException(), possibilita a conversão de códigos de erro em exceções CoreException específicas do tipo [SWS_CORE_05244]. Como todos os métodos de consulta são thread-safe e construtíveis como constexpr, o domínio é adequado para uma utilização eficiente a nível de todo o cluster. Se as exceções de C++ estiverem desativadas na toolchain, o método de exceção não participa na resolução de sobrecarga.
Contexto
A classe ara::core::CoreErrorDomain representa o domínio de erro específico para todos os estados de erro que têm origem no cluster funcional ara::core. É definida como uma especialização final de ErrorDomain, impedindo assim qualquer derivação posterior. A classe disponibiliza, através do método Name(), o nome curto exclusivo do domínio [SWS_CORE_05242]. Para uma integração consistente no modelo de tratamento de erros da AUTOSAR, CoreErrorDomain define aliases de tipo centrais: Errc referencia diretamente como alias a enumeração CoreErrc[SWS_CORE_05231], enquanto Exception constitui o alias para a classe de exceção base correspondente CoreException[SWS_CORE_05232]. Entre os parceiros de interação mais importantes encontram-se os encapsuladores genéricos de erro do tipo ErrorCode, que mantêm uma referência para o respetivo domínio de erro, bem como componentes executantes que diagnosticam ou tratam estados de erro.
Ciclo de vida
A criação de um CoreErrorDomain ocorre através do construtor predefinido sem parâmetros constexpr CoreErrorDomain() noexcept[SWS_CORE_05241]. Como o construtor está declarado como constexpr e noexcept, a instância pode ser criada logo no momento da compilação, sem sobrecarga de alocação ou risco de exceções.
Interpretação: Como os domínios de erro na norma AUTOSAR Adaptive são concebidos como stateless e disponibilizam exclusivamente metadados constantes e lógica de transformação, é provável que exista tipicamente uma instância singleton global ou estática no sistema, acedida a nível de todo o cluster. Pergunta Q-7b4761bf124c5755 (aberta) A instância permanece válida ao longo de todo o tempo de execução do processo. No que respeita à concorrência, as operações da classe são especificadas como thread-safe [SWS_CORE_05241], [SWS_CORE_05242], [SWS_CORE_05243], permitindo consultas simultâneas a partir de múltiplas threads paralelas sem medidas de sincronização adicionais.
Caminho de utilização
Durante o funcionamento contínuo, CoreErrorDomain é consultado sobretudo em dois cenários típicos pelo sistema de tempo de execução ou pelo código da aplicação: para a inspeção textual de erros e para o tratamento de exceções.
Caso ocorra um erro, é possível consultar a mensagem de texto correspondente através da função-membro Message(), passando o código de erro numérico [SWS_CORE_05243]. A especificação garante de forma vinculativa que esta função nunca retorna um ponteiro nulo (nullptr), de modo que o const char* retornado pode ser utilizado com segurança para saídas de diagnóstico ou registo em log. Se um erro não deva ser tratado como valor de retorno, mas propagado como exceção de C++, utiliza-se para o efeito o método ThrowAsException()[SWS_CORE_05244]. Este recebe uma instância de ErrorCode, instancia a CoreException correspondente e lança-a na pilha de chamadas atual.
Diagrama de sequência: fluxo típico para a tradução de códigos de erro e disparo condicional de exceções. Fontes: [SWS_CORE_05243], [SWS_CORE_05244]
Cenários de erro
As funções Name() e Message(), bem como o construtor, estão declarados como noexcept e classificados como seguros para exceções [SWS_CORE_05241], [SWS_CORE_05242], [SWS_CORE_05243]. Não lançam exceções, mesmo sob condições de erro, nem geram códigos de erro próprios.
Em contrapartida, ThrowAsException() está explicitamente anotado com noexcept(false) e classificado como não seguro para exceções, uma vez que o lançamento determinístico de uma exceção (do tipo CoreException) representa a tarefa primária desta interface [SWS_CORE_05244]. Constitui uma pré-condição arquitetural central: caso as exceções de C++ estejam desativadas na toolchain utilizada ou nas configurações do compilador, esta função não deve participar na resolução de sobrecarga [SWS_CORE_05244]. Isto evita erros de compilação em ambientes de sistema que seguem a abordagem de sistemas embutidos tolerante a falhas sem tratamento de exceções de C++.
Este guia foi gerado por um sistema de IA com base na especificação R25-11.
Throw the exception type corresponding to the given ErrorCode.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: c5a4846a6615Procedência
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
A função-membro ThrowAsException da classe ara::core::CoreErrorDomain (definida no cabeçalho ara/core/core_error_domain.h) destina-se ao lançamento síncrono de uma exceção C++ com base em um código de erro [SWS_CORE_05244] passado. Como parâmetro, a função recebe uma referência a uma instância constante de ErrorCode (const ErrorCode &errorCode) [SWS_CORE_05244]. O método não possui valor de retorno; em vez disso, lança imediatamente uma exceção do tipo CoreException, que encapsula completamente o objeto ErrorCode passado [SWS_CORE_05244].
Em relação ao contexto de execução, concorrência e condições do compilador, aplicam-se as seguintes diretrizes:
Segurança de threads: a função está especificada como segura para threads (thread-safe) e, portanto, pode ser chamada com segurança a partir de contextos concorrentes [SWS_CORE_05244].
Segurança de exceções: o comportamento está formalmente classificado como não seguro contra exceções (not exception safe), visto que a função está declarada com noexcept(false) e lança intencionalmente uma exceção [SWS_CORE_05244].
Restrição do compilador: se as exceções C++ estiverem desativadas na cadeia de ferramentas do compilador, o método não pode participar da resolução de sobrecarga conforme [SWS_CORE_10304][SWS_CORE_05244].
Na estrutura da arquitetura, o método sobrescreve (override) a função-base puramente virtual ThrowAsException da classe abstrata ara::core::ErrorDomain[SWS_CORE_00154]. Na aplicação típica, a função não é chamada diretamente no objeto de domínio, mas sim acionada por meio do método auxiliar ErrorCode::ThrowAsException(), que encaminha a chamada dinamicamente através de this->Domain().ThrowAsException(*this) para o domínio de erro responsável [SWS_CORE_00519].
Esta nota de uso foi gerada por uma IA com base na especificação AUTOSAR Adaptive R25-11.
CoreException an exception containing the given ErrorCode
Hinweise: This function shall not participate in overload resolution when C++ exceptions are disabled in the compiler toolchain. As per [SWS_CORE_10304]
Request a governed re-review of this record. The record is not changed immediately.
gemini-3.8-flash-low· 2026-10-13 · Original em alemão