Sirve como tipo de excepción para notificar errores de Core y encapsula un código de error para el tratamiento estructurado de excepciones.
GENERADO POR IAno revisadoModelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: 2b622ea04d25ProcedenciaPreguntas abiertas (2)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán
Sirve como tipo de excepción para notificar errores de Core y encapsula un código de error para el tratamiento estructurado de excepciones.
La clase ara::core::CoreException sirve como tipo de excepción central para la transmisión de errores del área funcional ara::core y, para ello, deriva de la clase base Exception. La instanciación se realiza obligatoriamente a través del constructor pasando un ErrorCode específico, el cual encapsula la causa del error [SWS_CORE_05212]. Como condición límite esencial, la implementación garantiza una total seguridad para subprocesos y seguridad frente a excepciones, así como una garantía noexcept sin excepciones durante la creación [SWS_CORE_05212]. Los invocadores capturan la excepción para tratar de manera controlada el estado de error contenido.
Contexto
La clase ara::core::CoreException sirve como tipo de excepción central para los errores que se producen dentro del área funcional ara::core. Según la declaración de la clase, deriva públicamente de la clase base Exception. La tarea fundamental de CoreException consiste en trasladar al modelo de tratamiento de excepciones de C++ un evento de error ocurrido, el cual viene descrito por un objeto ErrorCode. En el contexto de la plataforma, la clase actúa así como puente entre el componente de infraestructura que detecta el error y el código de plataforma o de aplicación invocador. Cuando una operación en ara::core falla y la interfaz prevé una excepción, se instancia y señaliza CoreException. En este proceso, el constructor recibe, conforme a [SWS_CORE_05212], un objeto concreto del tipo ErrorCode, el cual encapsula la causa técnica y el dominio del error ocurrido. La integración en la jerarquía de clases permite a las capas arquitectónicas superiores capturar errores bien de forma específica como CoreException o bien tratarlos genéricamente mediante la clase base Exception.
Diagrama de contexto: relación de CoreException con ErrorCode y con la clase base Exception. Fuentes: [SWS_CORE_05212]
Ciclo de vida
El ciclo de vida de una instancia de CoreException comienza en el contexto de la detección del error. La creación se realiza a través del constructor explicit CoreException(ErrorCode err) noexcept conforme a [SWS_CORE_05212]. Mediante la palabra clave explicit se impide una conversión implícita a partir de un ErrorCode, de modo que se fuerza una creación consciente del objeto. Una característica esencial de la construcción es la especificación como noexcept[SWS_CORE_05212]: la instanciación misma no puede desencadenar excepciones adicionales, con lo que se asegura una generación fiable de excepciones incluso en estados críticos del sistema. Además, la seguridad frente a excepciones está clasificada como totalmente segura (exception safe) y la operación se considera segura para subprocesos (thread-safe) [SWS_CORE_05212]. Tras la creación, el objeto de excepción se propaga habitualmente mediante throw. Durante el desenrollado de la pila (stack unwinding), la excepción se transporta hasta que queda ligada a un manejador de excepciones adecuado. El ciclo de vida finaliza al salir del bloque capturador, tras lo cual la destrucción del objeto de excepción se lleva a cabo de forma determinista.
Ruta de uso
La ruta de uso regular de CoreException se divide en tres fases sucesivas: diagnóstico, lanzamiento y captura. En primer lugar, un componente del módulo core identifica una desviación respecto al comportamiento previsto e instancia el correspondiente ErrorCode. A continuación, la excepción se crea invocando el constructor CoreException(err)[SWS_CORE_05212]. Inmediatamente después se produce el lanzamiento del objeto en el contexto de ejecución. A nivel de usuario, la llamada se ejecuta en un bloque protegido. Si se produce el caso de excepción, un bloque catch captura la instancia, típicamente como una referencia constante a CoreException o polimórficamente a través de la clase base Exception. En el manejador, el error se puede analizar, registrar o subsanar. Dado que el archivo de encabezado #include "ara/core/core_error_domain.h" está predeterminado según [SWS_CORE_05212], la declaración de la clase está disponible de manera consistente para los módulos de aplicación.
Escenarios de error
En el ámbito de los escenarios de fallo, CoreException sirve en sí misma como portadora de señal y no lanza errores secundarios durante su propia creación. Dado que el constructor está declarado como noexcept[SWS_CORE_05212], queda excluido el escenario de un fallo de construcción. La especificación garantiza una estricta seguridad frente a excepciones y seguridad para subprocesos [SWS_CORE_05212], de modo que el acceso concurrente durante la creación tampoco resulta problemático. Un escenario de error crítico se produce a nivel de sistema cuando ninguna instrucción o ámbito de nivel superior captura una CoreException lanzada, lo que en C++ estándar probablemente conduciría a la llamada de std::terminate. Pregunta Q-492683ca01bebc7d (abierta) Por lo tanto, los desarrolladores deben asegurarse de que las llamadas a funciones de ara::core que potencialmente lancen excepciones estén embebidas en bloques adecuados de tratamiento de excepciones. Otro escenario potencial concierne a la propagación a través de los límites de los componentes, en la que el ErrorCode contenido debe interpretarse correctamente para iniciar las medidas de subsanación de errores adecuadas.
Esta guía fue generada por un asistente de curación con IA sobre la base de AUTOSAR R25-11.
Diagrama de clases UML
Hohle Dreieckspfeile = Vererbung (zeigt zur Basisklasse); Klicken öffnet die jeweilige Klassenseite.
gemini-3.8-flash-low· 2026-10-13 · Original en alemán