Encapsula códigos de error de State Management para la transmisión y tratamiento de fallos funcionales críticos como excepción de C++.
GENERADO POR IAno revisadoModelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: 72647117def3ProcedenciaPreguntas abiertas (1)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán
Encapsula códigos de error de State Management para la transmisión y tratamiento de fallos funcionales críticos como excepción de C++.
La clase ara::sm::SmException sirve para la transmisión de situaciones excepcionales que se producen durante operaciones de State Management [SWS_SM_81242]. Se deriva de ara::core::Exception y encapsula un ara::core::ErrorCode específico para la identificación exacta de la causa del fallo producida. Su creación se realiza a través de un constructor explícito que está especificado como seguro para subprocesos y seguro frente a excepciones [SWS_SM_81243]. Las aplicaciones que realizan la llamada capturan el objeto de forma estructurada para analizar el código de error contenido e iniciar las correspondientes medidas de recuperación.
Contexto
La clase ara::sm::SmException actúa como excepción central para el clúster funcional State Management en la AUTOSAR Adaptive Platform [SWS_SM_81242]. Está definida en el encabezado ara/sm/sm_error_domain.h y se deriva públicamente de la clase de excepción fundamental de la plataforma ara::core::ExceptionAUTOSAR_AP_SWS_StateManagement §8.1.4 «Class: SmException». Dentro del documento, la especificación de la clase figura con el estado DRAFT [SWS_SM_81242].
En el contexto arquitectónico, la clase conecta tres roles centrales: State Management como instancia desencadenante en caso de operaciones de estado fallidas, la aplicación Adaptive que realiza la llamada como entidad de tratamiento y la infraestructura base de ara::core, que proporciona la interfaz común para el tratamiento de errores. Como portadora de estados de error, sirve para transmitir situaciones de fallo del módulo sm de forma síncrona a instancias de control de nivel superior mediante el mecanismo de excepciones de C++.
Ciclo de vida
La instanciación de ara::sm::SmException se realiza explícitamente mediante el constructor SmException(ara::core::ErrorCode errorCode)[SWS_SM_81243]. Este constructor está declarado como noexcept y presenta tanto la propiedad de seguridad frente a excepciones (exception safe) como la de seguridad para subprocesos (thread-safe) AUTOSAR_AP_SWS_StateManagement §8.1.4.1.1.1 «SmException». Gracias a ello, se garantiza que la propia creación del objeto de excepción no falle ni desencadene excepciones adicionales, incluso si se genera en contextos de ejecución concurrentes.
Tras su creación, la instancia se lanza habitualmente por valor (by value) y se captura en el contexto que realiza la llamada como referencia a objetos constantes (const ara::sm::SmException& o polimórficamente como const ara::core::Exception&). Dado que la especificación no prescribe destructores específicos ni rutinas de limpieza manual, la destrucción del objeto de excepción debería seguir, según la interpretación, íntegramente la semántica estándar de C++ y los mecanismos de la clase base ara::core::Exception tan pronto como se abandone el bloque de tratamiento correspondiente. Pregunta Q-85b1fd2f6082db8e (abierta)
Ruta de uso
El flujo típico comienza con un componente de aplicación o de plataforma que dirige una solicitud de control de estado a State Management. Si el cambio de estado solicitado no se puede consumar internamente o concurre un fallo de excepción grave, State Management instanciará un ejemplar de ara::sm::SmException indicando el correspondiente ara::core::ErrorCode[SWS_SM_81243].
Diagrama de secuencias: señalización y tratamiento típicos de un error mediante SmException en State Management. Fuentes: [SWS_SM_81242], [SWS_SM_81243].
El componente que realiza la llamada captura la excepción lanzada en un bloque catch correspondiente. A través de los métodos heredados de la clase base ara::core::Exception, la aplicación puede inspeccionar el ara::core::ErrorCode encapsulado a fin de asociar semánticamente la causa del error e iniciar medidas específicas para subsanar el fallo o restablecer el estado del sistema.
Escenarios de error
La propia clase ara::sm::SmException no representa un elemento de operación propenso a errores, sino que es el objeto portador primario para situaciones excepcionales dentro de State Management [SWS_SM_81242]. La condición previa esencial para la creación es la puesta a disposición de un objeto ara::core::ErrorCode inicializado durante la invocación del constructor [SWS_SM_81243].
Si un ara::sm::SmException lanzado no es capturado por ningún manejador adecuado en la pila de llamadas, esto conduce según las reglas del estándar C++ a la invocación de std::terminate y, por ende, a la interrupción incontrolada del proceso afectado. En implementaciones que prescriben prescindir de excepciones en favor de ara::core::Result, se evita el lanzamiento; no obstante, si la vía de excepción se encuentra disponible, la encapsulación asegura que el código de error original se transporte sin alteraciones para el diagnóstico de fallos.
Esta guía de clase se basa en la especificación AUTOSAR Adaptive R25-11. Todas las indicaciones se fundamentan en los puntos de especificación referenciados.
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