Encapsulation of an ErrorDomain. An ErrorDomain is the controlling entity for ErrorCode’s error code values, and defines the mapping of such error code values to textual representations. This type constitutes a base class for ErrorDomain implementations. This class is a literal type, and subclasses are strongly advised to be literal types as well.
Serve como classe base para o controle de códigos de erro e mapeia valores de erro específicos de domínio para mensagens de texto.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: d0712f7c0a23ProcedênciaPerguntas em aberto (2)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
Serve como classe base para o controle de códigos de erro e mapeia valores de erro específicos de domínio para mensagens de texto.
A classe ara::core::ErrorDomain serve como classe base abstrata para o controle de valores de erro e mapeia códigos específicos de área para suas representações textuais [SWS_CORE_00153]. Subclasses encapsulam um número de identificação exclusivo em todo o sistema e definem a tradução para textos de erro imutáveis, bem como o tratamento de exceções específico de tipo. Para possibilitar o uso como Literal Type em tempo de compilação, a classe base conta com um destrutor não virtual e protegido [SWS_CORE_00136]. Operações de cópia e movimentação são completamente impedidas, de modo que as instâncias atuam como identidades imutáveis.
Contexto
A classe ara::core::ErrorDomain constitui a base comum para o gerenciamento estruturado de erros na AUTOSAR Adaptive Platform. Ela atua como classe base abstrata para domínios de erro concretos e assume a responsabilidade central de controle para valores de erro encapsulados em ara::core::ErrorCode. Cada domínio estabelece seu próprio namespace e define o mapeamento de valores de erro específicos de domínio do tipo CodeType ([SWS_CORE_00122]) para representações textuais expressivas via Message() ([SWS_CORE_00153]). Além disso, a classe disponibiliza o alias de tipo IdType ([SWS_CORE_00121]) para identificadores de domínio globalmente exclusivos no sistema, bem como SupportDataType ([SWS_CORE_00123]) para dados adicionais específicos do fabricante.
No sistema global, ara::core::ErrorDomain interage com três parceiros essenciais:
Subclasses: domínios de erro específicos herdam de ara::core::ErrorDomain e implementam as funções-membro virtuais puras para nomes de domínio, mensagens de erro e tratamento de exceções.
ara::core::ErrorCode: representa um valor de erro concreto e delega a determinação do texto descritivo ao domínio de erro associado.
Cliente / código de aplicação: consulta informações de status por meio do código de erro ou diretamente no domínio ([SWS_CORE_00152]) ou recebe exceções C++ lançadas ([SWS_CORE_00154]).
A instanciação de ara::core::ErrorDomain ocorre de forma protegida: o construtor possui a visibilidade protected e requer um identificador de domínio globalmente exclusivo do tipo IdType ([SWS_CORE_00135]). Como o construtor é declarado como constexpr e noexcept, a classe base suporta a criação como Literal Type em tempo de compilação. Recomenda-se expressamente que as subclasses também garantam essa propriedade de Literal Type.
Qualquer duplicação ou transferência de instâncias de domínio é impedida:
O construtor de cópia ([SWS_CORE_00131]) e o construtor de movimento ([SWS_CORE_00132]) estão declarados como eliminados (delete).
O operador de atribuição por cópia ([SWS_CORE_00133]) e o operador de atribuição por movimento ([SWS_CORE_00134]) também estão eliminados.
O destrutor é declarado como protected e definido como implementação padrão ([SWS_CORE_00136]). Ele é mantido deliberadamente trivial e não virtual para que a classe possa permanecer um Literal Type. Embora ara::core::ErrorDomain forneça interfaces puramente virtuais, nenhuma destruição polimórfica por meio de ponteiro da classe base é necessária ([SWS_CORE_00136]). Na prática, instâncias concretas de domínio devem ser gerenciadas como objetos de longa duração ou estáticos (interpretação). Pergunta Q-a874dd64f6320d21 (aberta)
Em relação à propriedade, todos os ponteiros para nomes ([SWS_CORE_00152]) e textos de erro ([SWS_CORE_00153]) permanecem na posse da classe de domínio e não devem ser liberados pelos clientes. Todas as operações de leitura e comparação são seguras para threads e seguras para exceções ([SWS_CORE_00135], [SWS_CORE_00151]).
Caminho de utilização
Duas instâncias de ara::core::ErrorDomain são comparadas como iguais se, e somente se, os seus identificadores de domínio obtidos via Id() ([SWS_CORE_00151]) coincidirem ([SWS_CORE_00137], [SWS_CORE_00138]). O fluxo típico de resolução de erros e tratamento de exceções divide-se nas seguintes etapas:
Identificação do domínio: O cliente ou o objeto de erro obtém o nome do domínio como uma string terminada em nulo por meio de Name() ([SWS_CORE_00152]).
Resolução da mensagem: Por meio de Message(errorCode), o valor numérico do erro é passado para o domínio ([SWS_CORE_00153]). O domínio retorna um texto de erro baseado em ponteiro, terminado em nulo, que nunca é nullptr.
Tratamento de exceções: Caso um código de erro deva ser convertido em uma exceção, o cliente chama ThrowAsException(errorCode) ([SWS_CORE_00154]). Em seguida, o domínio lança uma instância adequada de ara::core::Exception que encapsula o código de erro fornecido.
Ao lidar com ara::core::ErrorDomain, devem ser considerados os seguintes cenários de erro e requisitos de interface:
Associação incorreta de domínio: Se for passado para o método Message() um errorCode que não provenha desta ErrorDomain específica, isso constituirá a violação especificada WrongDomainOfAn-ErrorCodeViolation ([SWS_CORE_00153]). Os chamadores devem garantir que o código de erro corresponda à instância do domínio.
Exceções C++ desativadas: O método ThrowAsException() não é seguro contra exceções (not exception safe) e lança uma exceção ([SWS_CORE_00154]). Se as exceções C++ estiverem desativadas na toolchain do compilador, essa função não poderá participar da resolução de sobrecarga ([SWS_CORE_00154]).
Exclusão de ponteiro nulo: Nem Name() nem Message() podem jamais retornar nullptr ([SWS_CORE_00152], [SWS_CORE_00153]). Uma implementação de subclasse que retorne nullptr quebra a especificação da interface.
Este guia foi gerado por um assistente de curadoria de IA com base na especificação AUTOSAR R25-11.
Compare for equality with another ara::core::ErrorDomain instance. Two ara::core::ErrorDomain instances compare equal when their identifiers (returned by Id()) are equal
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 59f6b727c495Procedência
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
A função-membro Id() da classe ara::core::ErrorDomain do ficheiro de cabeçalho ara/core/error_domain.h retorna síncronamente o identificador unívoco do respetivo domínio de erro ([SWS_CORE_00151]). A chamada não espera parâmetros de entrada e retorna o identificador de domínio como valor do tipo IdType, garantindo assim uma distinção inequívoca de diferentes domínios de erro no sistema global.
Para o tratamento de erros é relevante que a função seja declarada como noexcept e classificada como exception safe ([SWS_CORE_00151]). Portanto, nunca lança exceções e não reporta códigos de erro nem casos especiais. Devido à sua característica como método constexpr, o identificador pode, se necessário, ser avaliado em tempo de compilação e utilizado em expressões constantes.
Em termos de concorrência e condições de chamada, Id() está especificada como thread-safe ([SWS_CORE_00151]). A chamada é sem estado e livre de efeitos secundários modificadores, de modo que qualquer número de threads pode aceder à mesma instância simultaneamente e sem mecanismos externos de bloqueio.
Na interação dentro da arquitetura de domínios, o identificador constitui o critério primário de comparação: duas instâncias de ara::core::ErrorDomain são consideradas iguais de acordo com a especificação se, e apenas se, os seus identificadores fornecidos por Id() coincidirem, o que é implementado diretamente pelo operador de igualdade operator== ([SWS_CORE_00137]).
Esta nota de utilização foi criada por uma IA e baseia-se no AUTOSAR Adaptive R25-11.
Return a textual representation of the given errorCode.
The returned pointer remains owned by the ara::core::ErrorDomain sub-class and shall not be freed by clients.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 9827a3eb35a8ProcedênciaPerguntas em aberto (1)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
A função puramente virtual Message da classe base ara::core::ErrorDomain do cabeçalho ara/core/error_domain.h serve para a obtenção síncrona de uma representação textual para um código de erro específico do domínio fornecido errorCode[SWS_CORE_00153]. Ela retorna um ponteiro para uma cadeia de caracteres terminada em nulo (const char *), que é garantido nunca ser nullptr. A memória referenciada permanece em posse da respectiva subclasse de ara::core::ErrorDomain e não deve, sob hipótese alguma, ser liberada por clientes chamadores [SWS_CORE_00153].
Em relação à concorrência e à robustez, o método está declarado como noexcept, é considerado seguro contra exceções (exception safe) e foi projetado para ser totalmente seguro para threads (thread-safe) [SWS_CORE_00153]. No que diz respeito a possíveis estados de erro, especifica-se que um errorCode que não provenha da respectiva instância de ara::core::ErrorDomain resulta em uma violação do tipo WrongDomainOfAnErrorCodeViolation[SWS_CORE_00153].
Na interação com o modelo de tratamento de erros da AUTOSAR, domínios de erro concretos como ara::core::FutureErrorDomain[SWS_CORE_00443] e ara::core::CoreErrorDomain[SWS_CORE_05243] sobrescrevem este método a fim de transformar códigos de erro específicos do domínio em textos de mensagem concretos. Interpretação: A interação com ara::core::ErrorCode::Message()[SWS_CORE_00518], que retorna uma representação textual como StringView, baseia-se presumivelmente no fato de que ErrorCode encaminha a tradução para o método Message do domínio de erro associado. Pergunta Q-f9007fdf5234b6a4 (aberta)
Esta nota de uso foi gerada automaticamente com base nos requisitos da especificação.
This function will determine the appropriate exception type for the given ErrorCode according to [SWS_CORE_10953] and throw it. The thrown exception will contain the given ErrorCode.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: f434ab45abb9Procedência
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
O método puramente virtual ThrowAsException da classe ara::core::ErrorDomain serve para lançar sincronamente um código de erro passado como exceção do tipo ara::core::Exception[SWS_CORE_00154]. A função aceita como parâmetro de entrada uma referência a const ErrorCode &errorCode e não possui qualquer valor de retorno, uma vez que a execução é terminada pelo lançamento da exceção [SWS_CORE_00154].
No que diz respeito ao comportamento de erros e exceções, o respetivo domínio determina o tipo de exceção adequado para o código de erro passado de acordo com [SWS_CORE_10953] e lança-o [SWS_CORE_00154]. A exceção lançada contém o ErrorCode passado [SWS_CORE_00154]. A função está classificada como não segura contra exceções (not exception safe) [SWS_CORE_00154].
Para a concorrência e o contexto do compilador aplicam-se os seguintes requisitos:
Segurança de threads: A chamada de ThrowAsException está especificada como segura para threads (thread-safe) [SWS_CORE_00154].
Restrição no caso de exceções C++ desativadas: Se as exceções C++ estiverem desativadas na toolchain do compilador, a função não pode participar na resolução de sobrecarga de acordo com [SWS_CORE_10304][SWS_CORE_00154].
Na interação com outros componentes, a função forma a base para o lançamento de exceções através de objetos de erro: Assim, ara::core::ErrorCode::ThrowAsException delega o lançamento ao domínio correspondente através de this->Domain().ThrowAsException(*this)[SWS_CORE_00519]. Implementações concretas sobrepõem esta interface para lançar exceções específicas como CoreException em CoreErrorDomain[SWS_CORE_05244] ou FutureException em FutureErrorDomain[SWS_CORE_00444].
Este texto foi criado por uma IA e baseia-se na especificação AUTOSAR Adaptive R25-11.
Any exception of the type as defined in [SWS_CORE_10953] 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.
This dtor is non-virtual (and trivial) so that this class can be a literal type. While this class has virtual functions, no polymorphic destruction is needed.
gemini-3.8-flash-low· 2026-10-13 · Original em alemão