Encapsula códigos de error de Platform Health Management como excepción segura para subprocesos para operaciones de módulo fallidas.
GENERADO POR IAno revisadoModelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: 9c0b25d6fb92ProcedenciaPreguntas abiertas (2)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán
Encapsula códigos de error de Platform Health Management como excepción segura para subprocesos para operaciones de módulo fallidas.
La clase ara::phm::PhmException sirve en Platform Health Management como tipo de excepción central para la encapsulación y transferencia de errores específicos del módulo a los componentes invocadores. En caso de detección de errores, se instancia explícitamente con un ara::core::ErrorCode y se lanza a fin de permitir un tratamiento estructurado de errores a través de los bloques catch correspondientes [SWS_PHM_01243]. Como restricción fundamental, su construcción está especificada como noexcept, thread-safe y exception-safe, con lo que se descartan errores secundarios durante la creación de la excepción [SWS_PHM_01243]. Interpretación: los invocadores capturan típicamente el objeto por referencia para evaluar de forma determinista el código de error contenido sin asignación dinámica de memoria. Pregunta (abierta)
Contexto
La clase ara::phm::PhmException actúa como tipo de excepción dedicado para Platform Health Management (PHM) dentro de AUTOSAR Adaptive Platform. Conforme a la definición de la clase, deriva públicamente de ara::core::Exception y constituye el nexo para comunicar estados de error del módulo phm a los componentes del sistema y de la aplicación invocadores a través del mecanismo de excepciones estandarizado de C++. En la arquitectura del sistema, la clase interactúa primordialmente entre los servicios operativos de PHM, los cuales ejecutan funciones de supervisión y detectan estados de error ante violaciones de reglas, y las rutinas de tratamiento de errores de nivel superior de la aplicación. Mediante la integración en el modelo de tratamiento de errores fundamental de ara::core, se garantiza que los informes de error específicos del dominio procedentes de Platform Health Management puedan transportarse y procesarse de manera homogénea.
Ciclo de vida
El ciclo de vida de una instancia de ara::phm::PhmException comienza con la instanciación explícita en caso de error. Conforme a [SWS_PHM_01243], el objeto se crea a través del constructor PhmException(ara::core::ErrorCode errorCode) incluyendo el encabezado ara/phm/phm_error_domain.h. La creación está declarada como noexcept y presenta tanto las propiedades «exception safe» como «thread-safe» [SWS_PHM_01243]. Esto garantiza que la instanciación del propio objeto de excepción se realice de forma segura incluso bajo alta concurrencia y no desencadene en ningún momento excepciones secundarias inesperadas.
El objeto encapsula el ara::core::ErrorCode pasado y posee un estado inmutable tras su creación. Durante el desenrollado de la pila (stack unwinding), el entorno de ejecución transporta el objeto de excepción. La destrucción se produce de forma determinista al salir del bloque catch de tratamiento conforme a las reglas estándar de C++. Interpretación: es probable que las instancias se creen habitualmente de forma directa en la expresión throw en la pila y se capturen por referencia (const ara::phm::PhmException&), de modo que en el lado del invocador no se requiera gestión dinámica de memoria. Pregunta Q-37fc47021a78a0db (abierta)
Ruta de uso
La ruta de uso típica comienza cuando falla una operación supervisada de Platform Health Management o se detecta una desviación de estado no permitida. A continuación, la función de PHM desencadenante inicializa un objeto de excepción con el código de error asociado y lo lanza desde [SWS_PHM_01243]. En el lado del invocador, la sección de código protegida se ejecuta dentro de un bloque try-catch. Presumiblemente, las aplicaciones capturan la excepción bien específicamente como ara::phm::PhmException o bien de forma polimórfica a través de la clase base ara::core::Exception. Pregunta Q-54638c0dde7d9195 (abierta) En el manejador de excepciones se extrae el ara::core::ErrorCode contenido a fin de analizar la causa e iniciar las correspondientes contramedidas o estrategias de funcionamiento degradado.
Diagrama de secuencias: flujo típico desde la detección de errores en PHM pasando por el lanzamiento de ara::phm::PhmException hasta la evaluación en el manejador. Fuentes: [SWS_PHM_01243].
Escenarios de error
Un componente central de ara::phm::PhmException es el transporte del código de error en tiempo de ejecución. Como precondición para la creación del objeto se establece el paso de un ara::core::ErrorCode válido [SWS_PHM_01243]. La poscondición de la llamada es un objeto de excepción completamente inicializado que proporciona el código de error pasado de forma inalterada para su consulta.
Dado que el constructor está especificado explícitamente como noexcept y «exception safe» [SWS_PHM_01243], queda descartada la aparición de excepciones durante la propia construcción de la excepción. Por lo tanto, no puede producirse un fallo en la creación del objeto, lo que evita una terminación prematura mediante std::terminate durante la notificación del error. La seguridad para subprocesos especificada («thread-safe») protege asimismo frente a la corrupción de datos cuando múltiples subprocesos notifican paralelamente estados de error mediante excepciones propias [SWS_PHM_01243]. Por consiguiente, los escenarios de fallo no atañen a la propia clase de excepción, sino que reflejan las causas técnicas de error codificadas en el ara::core::ErrorCode encapsulado del dominio de errores de PHM.
Esta guía ha sido generada por una IA sobre la base de la especificación de AUTOSAR Adaptive Platform 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