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 error específicos del dominio y datos adicionales para su evaluación o conversión en excepciones de C++.
GENERADO POR IAno revisadoModelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: 747258139aa5ProcedenciaPreguntas abiertas (1)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán
Encapsula códigos de error específicos del dominio y datos adicionales para su evaluación o conversión en excepciones de C++.
La clase ara::core::ErrorCode encapsula un valor de error sin procesar específico del dominio junto con su dominio de errores asignado y datos de contexto opcionales [SWS_CORE_00513]. Permite la lectura segura frente a excepciones de códigos de error y textos descriptivos, así como el reenvío según sea necesario como excepción de C++ específica de tipo a través de ThrowAsException()[SWS_CORE_00518], [SWS_CORE_00519]. Si las excepciones de C++ se desactivan en la cadena de herramientas, la interfaz de excepciones se excluye automáticamente de la resolución de sobrecargas [SWS_CORE_00519].
Contexto
La clase ara::core::ErrorCode actúa como encapsulamiento central para la información de error en AUTOSAR Adaptive Platform. Un código de error agrupa siempre un valor de error sin procesar específico del dominio de tipo ErrorDomain::CodeType con un dominio de errores asociado ara::core::ErrorDomain[SWS_CORE_00513]. El dominio de errores define el contexto semántico en el que debe interpretarse el valor sin procesar y establece la relación entre el código numérico y el significado funcional [SWS_CORE_00515]. Adicionalmente, un ErrorCode puede contener datos complementarios específicos del fabricante de tipo ErrorDomain::SupportDataType con el fin de proporcionar contexto ampliado sobre el origen del error sin asignación dinámica de memoria [SWS_CORE_00516].
Ciclo de vida
La instanciación de un ErrorCode se realiza bien mediante un tipo enumerable, bien mediante la especificación explícita del valor sin procesar y el dominio de errores. Para valores de enumeración con seguridad de tipos existe una plantilla de constructor que, por SFINAE, participa en la resolución de sobrecargas exclusivamente cuando el argumento es un tipo enum de C++ [SWS_CORE_00512]. Como alternativa, el constructor directo recibe un valor numérico sin procesar, una referencia al ErrorDomain correspondiente y datos adicionales opcionales [SWS_CORE_00513].
Ambos constructores están declarados como constexpr y noexcept. Esto garantiza una total seguridad frente a excepciones durante la creación y permite la construcción ya en tiempo de compilación [SWS_CORE_00512], [SWS_CORE_00513]. Interpretación: puesto que ErrorCode gestiona únicamente datos elementales y una referencia al dominio de larga duración, la clase se comporta como un tipo por valor ligero que puede copiarse libremente y leerse entre diferentes subprocesos. Pregunta Q-8ac788b51fb75a1c (abierta) Todas las operaciones de observación están especificadas como seguras para subprocesos y seguras frente a excepciones [SWS_CORE_00514], [SWS_CORE_00515].
Ruta de uso
Un flujo de uso típico comprende la creación al detectar un estado de error, la inspección de metadatos relevantes por parte del invocador y, en caso necesario, el reenvío a un tratamiento de excepciones:
Creación: el error se construye mediante un valor de enumeración específico del dominio y datos de contexto opcionales [SWS_CORE_00512].
Identificación: el invocador consulta el valor numérico sin procesar mediante Value()[SWS_CORE_00514] y el dominio de errores asignado mediante Domain()[SWS_CORE_00515].
Diagnóstico: los datos adicionales específicos del fabricante se leen a través de SupportData()[SWS_CORE_00516], mientras que Message() proporciona una descripción legible para humanos como StringView[SWS_CORE_00518].
Disparo de excepciones: si el error debe propagarse en una estructura de control basada en excepciones, el llamador dispara la excepción correspondiente a través de ThrowAsException()[SWS_CORE_00519].
La clase ara::core::ErrorCode actúa como puente entre la gestión de errores exenta de excepciones y la basada en excepciones. Los métodos Value(), Domain(), SupportData() y Message() cuentan con la garantía noexcept y pueden invocarse incluso en situaciones de escasez de recursos sin riesgo de errores derivados [SWS_CORE_00514], [SWS_CORE_00515], [SWS_CORE_00516], [SWS_CORE_00518].
Un escenario de error independiente lo constituye el método ThrowAsException(), que está declarado explícitamente como noexcept(false) y not exception safe[SWS_CORE_00519]. Su comportamiento corresponde a la llamada this->Domain().ThrowAsException(*this); determina a través del ErrorDomain vinculado el tipo de excepción adecuado y lanza una excepción que encapsula la instancia de ErrorCode actual [SWS_CORE_00519]. Una condición de contorno esencial radica en que ThrowAsException() no participa en la resolución de sobrecargas si las excepciones de C++ están deshabilitadas en la cadena de herramientas del compilador [SWS_CORE_00519].
Generado por autodocs-IA basándose en AUTOSAR Adaptive Platform R25-11.
Construct a new ErrorCode instance with parameters
GENERADO POR IAno revisadoModelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: aa921d126307ProcedenciaPreguntas abiertas (1)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán
El constructor de plantilla ErrorCode instancia de forma síncrona una descripción de error dentro de la clase ara::core::ErrorCode del archivo de cabecera ara/core/error_code.h[SWS_CORE_00512]. Toma un valor de código de error específico del dominio e de un tipo de enumeración EnumT, así como datos adicionales específicos del fabricante opcionales data del tipo ErrorDomain::SupportDataType, que se inicializan vacíos por defecto [SWS_CORE_00512]. Como restricción esencial, el constructor solo participa en la resolución de sobrecargas mediante SFINAE si EnumT es efectivamente un tipo de enumeración [SWS_CORE_00512]. A diferencia de la sobrecarga alternativa con transferencia explícita de dominio [SWS_CORE_00513], la asignación al ErrorDomain correspondiente probablemente se deduzca de forma implícita a partir del tipo EnumT. Pregunta Q-83bc8268971748ff (abierta)
En cuanto a la concurrencia y la seguridad ante errores, el constructor está especificado como seguro para subprocesos (thread-safe) y totalmente seguro ante excepciones (exception safe), y está declarado como noexcept[SWS_CORE_00512]. Gracias a la calificación constexpr, la instanciación ya puede tener lugar en tiempo de compilación en expresiones constantes [SWS_CORE_00512]. No se definen mensajes de error específicos de DET o DEM para la construcción. Si el error representado debe señalarse como una excepción en el flujo de control posterior, la instancia generada proporciona el método ThrowAsException(), que determina y lanza el tipo de excepción adecuado [SWS_CORE_00519]; de forma correspondiente, el dominio del error también puede lanzar la excepción directamente [SWS_CORE_00154].
En interacción con el sistema general, las propiedades del objeto pueden consultarse a través de los métodos Value()[SWS_CORE_00514], Domain()[SWS_CORE_00515], SupportData()[SWS_CORE_00516] y la representación de texto Message()[SWS_CORE_00518]. En las comparaciones de valores mediante operator==[SWS_CORE_00571] y operator!=[SWS_CORE_00572], solo se tienen en cuenta Value() y Domain(), mientras que SupportData() no se considera [SWS_CORE_00571]. Además, el objeto creado sirve como base para la encapsulación en objetos de excepción estandarizados como ara::core::Exception[SWS_CORE_00611] (legible a través de Error()[SWS_CORE_00613]), ara::core::CoreException[SWS_CORE_05212] o ara::core::FutureException[SWS_CORE_00412].
Nota: Esta nota de uso fue generada por una inteligencia artificial y se basa exclusivamente en las especificaciones del release R25-11.
GENERADO POR IAno revisadoModelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: f7a24bdeeeddProcedencia
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán
La función miembro SupportData() de la clase ara::core::ErrorCode de la cabecera #include "ara/core/error_code.h" devuelve datos de contexto complementarios sobre un error [SWS_CORE_00516]. El método se invoca de forma síncrona en una instancia, no requiere parámetros y devuelve un valor de tipo ErrorDomain::SupportDataType[SWS_CORE_00516]. Al estar declarado como constexpr y noexcept, se garantiza que la llamada esté libre de excepciones y pueda evaluarse ya en tiempo de compilación [SWS_CORE_00516].
En cuanto a la concurrencia y la seguridad de ejecución, el método está especificado como seguro para subprocesos (thread-safe) y seguro ante excepciones (exception safe) [SWS_CORE_00516]. Dado que se trata de un acceso de lectura al contexto de error interno, no se producen estados de error, por lo que la llamada también es adecuada para rutas de ejecución críticas y concurrentes [SWS_CORE_00516].
En interacción con las demás interfaces de tratamiento de errores, SupportData() lee aquellos datos adicionales específicos del fabricante que se transfirieron opcionalmente al constructor de ErrorCode mediante el parámetro data[SWS_CORE_00513]. Al comparar dos códigos de error mediante operator==, debe tenerse en cuenta que las instancias se evalúan como iguales únicamente a partir de los retornos de Value() y Domain(); el valor de retorno de SupportData() no se utiliza expresamente para la comparación de igualdad [SWS_CORE_00571].
Esta nota de uso se ha generado automáticamente a partir de la especificación 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.
GENERADO POR IAno revisadoModelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: 3205bd108ecbProcedencia
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán
La función miembro ThrowAsException de la clase ara::core::ErrorCode sirve para lanzar de forma síncrona un error producido como excepción de C++ ([SWS_CORE_00519]). La función no recibe parámetros de transferencia y no posee valor de retorno, ya que el flujo de control regular se interrumpe al lanzar la excepción.
Para determinar el tipo concreto de excepción, el método delega el lanzamiento en el dominio de error asignado según el comportamiento this->Domain().ThrowAsException(*this) ([SWS_CORE_00519]). A través de la interfaz de la clase base ara::core::ErrorDomain ([SWS_CORE_00154]), el dominio respectivo determina el tipo de excepción adecuado conforme a la prescripción de [SWS_CORE_10953]. La excepción lanzada siempre contiene la instancia ErrorCode causante. Los dominios concretos implementan esto de forma específica:
ara::core::FutureErrorDomain lanza una FutureException con la instancia de error transferida ([SWS_CORE_00444]).
En relación con la concurrencia y las condiciones límite, ThrowAsException está especificada como segura para subprocesos ([SWS_CORE_00519]). La seguridad frente a excepciones se ha declarado como not exception safe y la signatura presenta explícitamente noexcept(false) ([SWS_CORE_00519]). Una restricción central de la cadena de herramientas (toolchain) radica en que la función no participa en la resolución de sobrecarga si las excepciones de C++ están desactivadas en el compilador ([SWS_CORE_00519]).
Esta nota de uso se basa en las especificaciones de AUTOSAR de la versión 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 en alemán