Encapsulation of an error code. An ErrorCode contains a raw error code value and an Error Domain. The raw error code value is specific to this ErrorDomain.
Encapsula códigos de erro específicos de domínio e dados adicionais para avaliação ou conversão em exceções C++.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 747258139aa5Procedê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 específicos de domínio e dados adicionais para avaliação ou conversão em exceções C++.
A classe ara::core::ErrorCode encapsula um valor bruto de erro específico de domínio juntamente com seu domínio de erro associado e dados contextuais opcionais [SWS_CORE_00513]. Ela permite a leitura exception-safe de códigos de erro e textos descritivos, bem como o encaminhamento sob demanda como exceção C++ específica de tipo por meio de ThrowAsException()[SWS_CORE_00518], [SWS_CORE_00519]. Se as exceções C++ forem desativadas na toolchain, a interface de exceção é automaticamente omitida da resolução de sobrecarga [SWS_CORE_00519].
Contexto
A classe ara::core::ErrorCode serve como encapsulamento central para informações de erro na AUTOSAR Adaptive Platform. Um código de erro sempre agrega um valor bruto de erro específico de domínio do tipo ErrorDomain::CodeType a um domínio de erro associado ara::core::ErrorDomain[SWS_CORE_00513]. O domínio de erro define o contexto semântico no qual o valor bruto deve ser interpretado e estabelece a conexão entre o código numérico e o significado técnico [SWS_CORE_00515]. Além disso, um ErrorCode pode conter dados adicionais específicos do fornecedor do tipo ErrorDomain::SupportDataType, a fim de fornecer contexto expandido sobre a ocorrência do erro sem alocação dinâmica de memória [SWS_CORE_00516].
Ciclo de vida
A instanciação de um ErrorCode ocorre por meio de um tipo enumerável ou pela indicação explícita de valor bruto e domínio de erro. Para valores de enumeração type-safe, existe um template de construtor que, via SFINAE, só participa da resolução de sobrecarga se o argumento for um tipo enum de C++ [SWS_CORE_00512]. Como alternativa, o construtor direto recebe um valor bruto numérico, uma referência ao ErrorDomain responsável, bem como dados adicionais opcionais [SWS_CORE_00513].
Ambos os construtores são declarados como constexpr e noexcept. Isso garante total segurança contra exceções durante a criação e permite a construção já em tempo de compilação [SWS_CORE_00512], [SWS_CORE_00513]. Interpretação: como ErrorCode gerencia apenas dados elementares e uma referência ao domínio de longa duração, a classe se comporta como um tipo de valor leve que pode ser copiado livremente e lido entre diferentes threads. Pergunta Q-8ac788b51fb75a1c (aberta) Todas as operações de observação são especificadas como thread-safe e exception-safe [SWS_CORE_00514], [SWS_CORE_00515].
Caminho de utilização
Um fluxo típico de utilização abrange a criação mediante detecção de um estado de erro, a inspeção de metadados relevantes pelo chamador e, se necessário, o encaminhamento para um tratamento de exceções:
Criação: o erro é construído por meio de um valor de enumeração específico de domínio e dados de contexto opcionais [SWS_CORE_00512].
Identificação: o chamador consulta o valor bruto numérico por meio de Value()[SWS_CORE_00514] e o domínio de erro associado via Domain()[SWS_CORE_00515].
Diagnóstico: dados suplementares específicos do fabricante são lidos através de SupportData()[SWS_CORE_00516], enquanto Message() fornece uma descrição legível por humanos como StringView[SWS_CORE_00518].
Disparo de exceção: caso o erro deva ser propagado em uma estrutura de controle baseada em exceções, o chamador dispara a exceção correspondente por meio de ThrowAsException()[SWS_CORE_00519].
A classe ara::core::ErrorCode atua como uma ponte entre o gerenciamento de erros isento de exceções e baseado em exceções. Os métodos Value(), Domain(), SupportData() e Message() possuem a garantia noexcept e podem ser chamados mesmo sob restrições de recursos sem risco de erros subsequentes [SWS_CORE_00514], [SWS_CORE_00515], [SWS_CORE_00516], [SWS_CORE_00518].
Um cenário de erro autônomo é representado pelo método ThrowAsException(), que é explicitamente declarado como noexcept(false) e not exception safe[SWS_CORE_00519]. O seu comportamento corresponde à chamada this->Domain().ThrowAsException(*this); ele determina o tipo de exceção adequado por meio do ErrorDomain vinculado e lança uma exceção que encapsula a instância atual de ErrorCode[SWS_CORE_00519]. Uma condição de contorno essencial consiste no fato de que ThrowAsException() não participa da resolução de sobrecarga caso as exceções de C++ estejam desativadas na toolchain do compilador [SWS_CORE_00519].
Gerado por IA autodocs com base no AUTOSAR Adaptive Platform R25-11.
Construct a new ErrorCode instance with parameters
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: aa921d126307ProcedênciaPerguntas em aberto (1)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
O construtor de template ErrorCode instancia sincronamente uma descrição de erro dentro da classe ara::core::ErrorCode a partir do arquivo de cabeçalho ara/core/error_code.h[SWS_CORE_00512]. Ele aceita um valor de código de erro específico de domínio e de um tipo de enumeração EnumT, bem como dados adicionais específicos do fornecedor opcionais data do tipo ErrorDomain::SupportDataType, que são inicializados vazios por padrão [SWS_CORE_00512]. Como restrição essencial, o construtor participa da resolução de sobrecarga via SFINAE apenas se EnumT for de fato um tipo de enumeração [SWS_CORE_00512]. Diferentemente da sobrecarga alternativa com passagem explícita de domínio [SWS_CORE_00513], a atribuição ao ErrorDomain adequado provavelmente deve ser deduzida implicitamente com base no tipo EnumT. Pergunta Q-83bc8268971748ff (aberta)
Em relação à concorrência e à segurança contra erros, o construtor é especificado como seguro para threads (thread-safe), bem como totalmente seguro contra exceções (exception safe), e está declarado como noexcept[SWS_CORE_00512]. Graças à qualificação constexpr, a instanciação já pode ocorrer em tempo de compilação em expressões constantes [SWS_CORE_00512]. Mensagens de erro específicas de DET ou DEM não estão definidas para a construção. Se o erro representado precisar ser sinalizado como exceção no fluxo de controle posterior, a instância criada disponibiliza o método ThrowAsException(), que determina e lança o tipo de exceção adequado [SWS_CORE_00519]; correspondentemente, o domínio de erro também pode lançar a exceção diretamente [SWS_CORE_00154].
Na interação com o sistema geral, as propriedades do objeto podem ser consultadas através dos métodos Value()[SWS_CORE_00514], Domain()[SWS_CORE_00515], SupportData()[SWS_CORE_00516] e da representação em texto Message()[SWS_CORE_00518]. Em comparações de valores através de operator==[SWS_CORE_00571] e operator!=[SWS_CORE_00572], são considerados exclusivamente Value() e Domain(), enquanto SupportData() permanece desconsiderado [SWS_CORE_00571]. Além disso, o objeto gerado serve de base para o encapsulamento em objetos de exceção padronizados como ara::core::Exception[SWS_CORE_00611] (legível via Error()[SWS_CORE_00613]), ara::core::CoreException[SWS_CORE_05212] ou ara::core::FutureException[SWS_CORE_00412].
Nota: Esta nota de uso foi gerada por inteligência artificial e baseia-se exclusivamente nas especificações da release R25-11.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: f7a24bdeeeddProcedência
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
A função-membro SupportData() da classe ara::core::ErrorCode do cabeçalho #include "ara/core/error_code.h" retorna dados de contexto complementares referentes a um erro [SWS_CORE_00516]. O método é chamado sincronamente sobre uma instância, não requer parâmetros e retorna um valor do tipo ErrorDomain::SupportDataType[SWS_CORE_00516]. Devido à declaração como constexpr e noexcept, a chamada é garantidamente livre de exceções e já pode ser avaliada em tempo de compilação [SWS_CORE_00516].
Em relação à concorrência e à segurança de execução, o método é especificado como seguro para threads (thread-safe) e seguro contra exceções (exception safe) [SWS_CORE_00516]. Como se trata de um acesso de leitura ao contexto de erro interno, não ocorrem estados de erro, tornando a chamada adequada também para caminhos de execução críticos e concorrentes [SWS_CORE_00516].
Na interação com as demais interfaces de tratamento de erros, SupportData() lê aqueles dados adicionais específicos do fornecedor que foram passados opcionalmente ao construtor de ErrorCode através do parâmetro data[SWS_CORE_00513]. Ao comparar dois códigos de erro por meio de operator==, deve-se observar que as instâncias são avaliadas como iguais exclusivamente com base nos retornos de Value() e Domain(); o valor de retorno de SupportData() expressamente não é considerado para a comparação de igualdade [SWS_CORE_00571].
Esta nota de utilização foi gerada automaticamente com base na especificação AUTOSAR Adaptive R25-11.
This function will determine the appropriate exception type for this ErrorCode and throw it. The thrown exception will contain this ErrorCode.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 3205bd108ecbProcedência
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
A função de membro ThrowAsException da classe ara::core::ErrorCode serve para disparar sincronamente um erro ocorrido como uma exceção C++ ([SWS_CORE_00519]). A função não recebe parâmetros de entrada e não possui valor de retorno, já que o fluxo de controle regular é interrompido pelo lançamento da exceção.
Para determinar o tipo concreto de exceção, o método delega o disparo ao domínio de erro atribuído de acordo com o comportamento this->Domain().ThrowAsException(*this) ([SWS_CORE_00519]). Por meio da interface da classe base ara::core::ErrorDomain ([SWS_CORE_00154]), o respectivo domínio determina o tipo de exceção apropriado conforme a especificação de [SWS_CORE_10953]. A exceção lançada contém sempre a instância originária de ErrorCode. Domínios concretos implementam isso especificamente:
ara::core::FutureErrorDomain lança uma FutureException com a instância de erro fornecida ([SWS_CORE_00444]).
Em relação à concorrência e condições de contorno, ThrowAsException é especificado como thread-safe ([SWS_CORE_00519]). A segurança contra exceções é declarada com not exception safe, e a assinatura exibe explicitamente noexcept(false) ([SWS_CORE_00519]). Uma restrição central da toolchain consiste no fato de que a função não participa da resolução de sobrecarga quando exceções C++ estão desativadas no compilador ([SWS_CORE_00519]).
Esta nota de uso baseia-se nas especificações AUTOSAR da Release R25-11.
Any exception of the type determined by the associated ErrorDomain as defined in [SWS_CORE_10953]
Hinweise: This function shall not participate in overload resolution when C++ exceptions are disabled in the compiler toolchain. Behaves as if this->Domain().ThrowAsException(*this).
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