Define o domínio de erro do módulo de persistência para disponibilização de códigos de erro, descrições textuais e exceções.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: da81ed3d3cb6ProcedênciaPerguntas em aberto (1)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
Define o domínio de erro do módulo de persistência para disponibilização de códigos de erro, descrições textuais e exceções.
A classe ara::per::PerErrorDomain define o domínio de erro para o módulo de persistência e associa códigos de erro a mensagens descritivas, bem como a tipos de exceção [SWS_PER_00411]. Permite a consulta do nome do domínio através de interfaces seguras para threads, bem como a resolução de descrições de erro para valores de erro concretos. Em caso de necessidade, converte erros através de ThrowAsException() em exceções C++ [SWS_PER_00350]. Se as exceções estiverem desativadas na toolchain do compilador, esta função de lançamento não fica disponível, de modo que a verificação de erros tem de ser efetuada puramente com base em valores de retorno.
Contexto
A classe ara::per::PerErrorDomain define o domínio de erro específico para o módulo de persistência (Persistency) dentro da AUTOSAR Adaptive Platform. Herda da definição de tipo base ara::core::ErrorDomain e está declarada como final, constituindo assim a base para o tratamento tipificado de erros e para o mapeamento de erros de todas as operações relacionadas com persistência. Através dos aliases de tipo padronizados Errc[SWS_PER_00411] para a enumeração de códigos de erro subjacente PerErrc, bem como Exception[SWS_PER_00412] para a classe base de exceção específica do módulo PerException, a classe associa valores de erro numéricos, mensagens de erro elucidativas e objetos de exceção C++ concretos. Na arquitetura da plataforma, o domínio de erro interage estreitamente com os serviços de persistência, com os clusters funcionais chamadores, bem como com as estruturas genéricas de erro e de resultado de ara::core.
Ciclo de vida
A criação de uma instância é realizada através do construtor padrão PerErrorDomain()[SWS_PER_00313]. Este construtor está declarado como noexcept, totalmente seguro contra exceções (exception safe) e seguro para threads (thread-safe). Interpretação: a instância de PerErrorDomain deverá ser tipicamente gerida como objeto de longa duração ou global, de forma a garantir comparações de domínio e resoluções de tipo consistentes para erros de persistência durante todo o funcionamento. Pergunta Q-5d90982fddec40a7 (aberta) Como todas as operações de consulta da classe também estão classificadas como seguras para threads, múltiplas threads podem aceder em paralelo à mesma instância do domínio sem necessidade de mecanismos de sincronização adicionais ao nível do chamador.
Caminho de utilização
Um caminho de utilização típico compreende a identificação do domínio, a consulta de informações de diagnóstico compreensíveis e, opcionalmente, o lançamento de exceções em caso de erros ocorridos no módulo de persistência. Primeiramente, a função-membro Name() retorna o identificador unívoco do domínio de erros como cadeia de caracteres [SWS_PER_00314]; ela é especificada como noexcept, segura contra exceções e segura para threads. Se ocorrer um erro durante uma operação de persistência, o seu valor de erro numérico é resolvido através de Message()[SWS_PER_00315]. Este método recebe o código de erro numérico do tipo CodeType e retorna a mensagem de erro correspondente como ponteiro constante para caracteres (const char *), igualmente sob garantia de segurança completa contra exceções e segurança para threads.
Caso um estado de erro deva ser convertido numa exceção C++, a função ThrowAsException() é utilizada [SWS_PER_00350]. O fluxo seguinte esclarece a interação na consulta de erros e no lançamento de exceções:
Diagrama de sequência: fluxo típico da verificação de erros, consulta de texto e lançamento de exceções através da PerErrorDomain. Fontes: [SWS_PER_00314], [SWS_PER_00315], [SWS_PER_00350].
Cenários de erro
No emprego prático de ara::per::PerErrorDomain, os desenvolvedores têm de ter em conta as diferentes garantias relativamente ao tratamento de erros e à segurança contra exceções. Enquanto as interfaces de consulta Name()[SWS_PER_00314] e Message()[SWS_PER_00315] são estritamente declaradas como noexcept e classificadas como seguras contra exceções, a função-membro ThrowAsException() é considerada como não segura contra exceções (not exception safe) [SWS_PER_00350]. Este comportamento é semanticamente justificado, uma vez que a finalidade da função consiste no lançamento controlado de uma exceção correspondente ao código de erro (noexcept(false)).
Uma condição de contorno essencial diz respeito a plataformas ou configurações de build sem exceções C++ ativadas: se o tratamento de exceções estiver desativado no compilador, ThrowAsException() não participa na resolução de sobrecarga, em conformidade com [SWS_PER_00350]. Em tais ambientes, o software de aplicação tem de recorrer à avaliação de códigos de erro através dos aliases disponibilizados Errc[SWS_PER_00411] e das descrições textuais de Message()[SWS_PER_00315], em vez de capturar objetos de exceção do tipo Exception[SWS_PER_00412].
Este guia foi criado automaticamente com base nos requisitos da especificação AUTOSAR.
Throws the exception associated with the error code. As per [SWS_CORE_10304], this function does not participate in overload resolution when C++ exceptions are disabled in the compiler toolchain.
Throws the exception associated with the error code. As per [SWS_CORE_10304], this function does not participate in overload resolution when C++ exceptions are disabled in the compiler toolchain.
gemini-3.8-flash-low· 2026-10-13 · Original em alemão