Define el dominio de error del módulo de persistencia para proporcionar códigos de error, descripciones textuales y excepciones.
GENERADO POR IAno revisadoModelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: da81ed3d3cb6ProcedenciaPreguntas abiertas (1)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán
Define el dominio de error del módulo de persistencia para proporcionar códigos de error, descripciones textuales y excepciones.
La clase ara::per::PerErrorDomain define el dominio de error para el módulo de persistencia y vincula códigos de error con mensajes descriptivos, así como con tipos de excepción [SWS_PER_00411]. Permite consultar el nombre del dominio y resolver descripciones de error para valores de error concretos mediante interfaces seguras para subprocesos (thread-safe). En caso necesario, transfiere errores a excepciones de C++ mediante ThrowAsException()[SWS_PER_00350]. Si las excepciones están desactivadas en la cadena de herramientas del compilador, esta función de activación no está disponible, por lo que la comprobación de errores debe realizarse puramente basada en valores de retorno.
Contexto
La clase ara::per::PerErrorDomain define el dominio de error específico para el módulo de persistencia (Persistency) dentro de AUTOSAR Adaptive Platform. Hereda de la definición de tipo base ara::core::ErrorDomain y está declarada como final, con lo que constituye la base para el tratamiento y mapeo tipado de errores de todas las operaciones relacionadas con persistencia. Mediante los alias de tipo estandarizados Errc[SWS_PER_00411] para la enumeración de códigos de error subyacente PerErrc, así como Exception[SWS_PER_00412] para la clase base de excepción específica del módulo PerException, la clase vincula valores numéricos de error, mensajes de error descriptivos y objetos de excepción de C++ concretos. En la arquitectura de la plataforma, el dominio de error interactúa estrechamente con los servicios de persistencia, los clústeres funcionales invocadores y las estructuras genéricas de error y resultado de ara::core.
Ciclo de vida
La creación de una instancia se realiza mediante el constructor estándar PerErrorDomain()[SWS_PER_00313]. Este constructor está declarado como noexcept, y es completamente seguro frente a excepciones (exception safe) y seguro para subprocesos (thread-safe). Interpretación: la instancia de PerErrorDomain probablemente deba gestionarse como un objeto de larga vida o global, a fin de garantizar comparaciones de dominio y resoluciones de tipo coherentes para errores de persistencia a lo largo de todo el funcionamiento. Pregunta Q-5d90982fddec40a7 (abierta) Dado que todas las operaciones de consulta de la clase también están clasificadas como seguras para subprocesos, varios subprocesos pueden acceder en paralelo a la misma instancia de dominio sin necesidad de mecanismos de sincronización adicionales en el nivel del invocador.
Ruta de uso
Una ruta de uso típica abarca la identificación del dominio, la consulta de información de diagnóstico comprensible y, opcionalmente, la activación de excepciones ante errores ocurridos en el módulo de persistencia. En primer lugar, la función miembro Name() devuelve el identificador unívoco del dominio de error como cadena de caracteres [SWS_PER_00314]; está especificada como noexcept, segura frente a excepciones y segura para subprocesos. Si ocurre un error en una operación de persistencia, su valor numérico de error se resuelve mediante Message()[SWS_PER_00315]. Este método recibe el código de error numérico de tipo CodeType y devuelve el mensaje de error asociado como un puntero a caracteres constantes (const char *), garantizando igualmente una total seguridad frente a excepciones y seguridad para subprocesos.
Si un estado de error debe transformarse en una excepción de C++, se emplea la función ThrowAsException()[SWS_PER_00350]. La siguiente secuencia ilustra la interacción en la comprobación de errores y la activación de excepciones:
Diagrama de secuencia: Flujo típico de comprobación de errores, consulta de texto y activación de excepciones a través de PerErrorDomain. Fuentes: [SWS_PER_00314], [SWS_PER_00315], [SWS_PER_00350].
Escenarios de error
En el uso práctico de ara::per::PerErrorDomain, los desarrolladores deben considerar las distintas garantías relativas al tratamiento de errores y a la seguridad frente a excepciones. Mientras que las interfaces de consulta Name()[SWS_PER_00314] y Message()[SWS_PER_00315] están declaradas estrictamente como noexcept y se clasifican como seguras frente a excepciones, la función miembro ThrowAsException() se considera no segura frente a excepciones (not exception safe) [SWS_PER_00350]. Este comportamiento está justificado semánticamente, ya que el propósito de la función consiste en lanzar de forma controlada una excepción correspondiente al código de error (noexcept(false)).
Una condición de contorno fundamental afecta a las plataformas o configuraciones de compilación sin excepciones de C++ activadas: si el tratamiento de excepciones está desactivado en el compilador, ThrowAsException() no participa en la resolución de sobrecargas según [SWS_PER_00350]. En tales entornos, el software de aplicación debe recurrir a la evaluación de códigos de error a través de los alias proporcionados Errc[SWS_PER_00411] y las descripciones textuales de Message()[SWS_PER_00315], en lugar de capturar objetos de excepción del tipo Exception[SWS_PER_00412].
Esta guía fue generada automáticamente en base a los requisitos de especificación de 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 en alemán