Sirve para encapsular y reenviar códigos de error de diagnóstico como excepción de C++ a los llamadores de funciones de nivel superior.
GENERADO POR IAno revisadoModelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: 61473cb95c98ProcedenciaPreguntas abiertas (2)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán
Sirve para encapsular y reenviar códigos de error de diagnóstico como excepción de C++ a los llamadores de funciones de nivel superior.
La clase ara::diag::DiagException actúa como un tipo de excepción especializado para señalizar errores procedentes de clases de diagnóstico de la AUTOSAR Adaptive Platform ([SWS_DM_00515]). Encapsula un ara::core::ErrorCode y se lanza en caso de errores internos para reenviar estados de error de forma estructurada a las aplicaciones llamadoras ([SWS_DM_00516]). Su constructor es seguro para subprocesos y está declarado como seguro frente a excepciones mediante noexcept ([SWS_DM_00516]).
Contexto
La clase ara::diag::DiagException constituye el tipo de excepción central para el clúster funcional de la AUTOSAR Adaptive Platform Diagnostics (SWS Diagnostics §8.11.4 «Class: DiagException», [SWS_DM_00515]). Se deriva directamente de la clase base ara::core::Exception y es responsable de notificar al llamador, en caso de excepción, los estados de error que ocurran dentro de las clases de diagnóstico. Los interlocutores primarios de interacción son las clases de diagnóstico proveedoras dentro de ara::diag, que señalizan situaciones excepcionales, así como el software de aplicación usuario, que solicita operaciones de diagnóstico y captura posibles excepciones. Debido a su declaración en el archivo de cabecera ara/diag/diag_error_domain.h, la clase de excepción está directamente vinculada con los dominios de error específicos de diagnóstico ([SWS_DM_00516]).
Ciclo de vida
La instanciación de ara::diag::DiagException se efectúa pasando un código de error de tipo ara::core::ErrorCode al constructor ([SWS_DM_00516]). Este constructor está definido como explicit, lo que impide conversiones de tipo implícitas a partir de códigos de error. Además, la creación está declarada como noexcept, lo que garantiza la seguridad frente a excepciones («exception safe») durante la creación del objeto y evita que se lance otra excepción mientras se desencadena un estado de excepción ([SWS_DM_00516]). Para la llamada del constructor se garantiza la seguridad para subprocesos («thread-safe») ([SWS_DM_00516]). En cuanto al ciclo de vida posterior, el objeto de excepción existe durante el tiempo que dura el proceso de stack unwinding hasta la finalización del bloque catch asociado (interpretación: la propiedad y la destrucción del objeto de excepción siguen los mecanismos estandarizados del entorno de ejecución de C++). Pregunta Q-ae485b4ea411b187 (abierta)
Ruta de uso
La ruta de uso regular de ara::diag::DiagException abarca desde la detección de una situación de error en el subsistema de diagnóstico hasta la evaluación por parte del nivel de aplicación. La siguiente secuencia ilustra la interacción de los componentes participantes:
Diagrama de secuencia: secuencia típica al producirse, lanzarse y tratarse una DiagException. Fuentes: [SWS_DM_00515], [SWS_DM_00516].
La aplicación inicia primero una operación en una clase funcional del módulo ara::diag. Si durante el procesamiento se produce una condición que excluye una ruta de retorno regular, la clase de diagnóstico crea una instancia de ara::diag::DiagException especificando el ara::core::ErrorCode correspondiente ([SWS_DM_00516]). Esta excepción se lanza a través del mecanismo habitual de excepciones de C++. La instancia de la aplicación llamadora captura el objeto en un manejador de excepciones tipificado para iniciar las medidas adecuadas de recuperación o de registro.
Escenarios de error
Como clase de señalización de errores, ara::diag::DiagException atiende prioritariamente la transmisión de estados de error de diagnóstico. La condición previa para la construcción exitosa es el suministro de un parámetro err inicializado de tipo ara::core::ErrorCode ([SWS_DM_00516]). La seguridad frente a excepciones del constructor garantiza que, incluso en situaciones críticas de recursos, no se desencadenen excepciones secundarias en la ruta de construcción ([SWS_DM_00516]). Tras una instanciación exitosa, el objeto encapsula por completo el código de error suministrado (interpretación: es de suponer que el código de error de diagnóstico concreto se inspeccione mediante los mecanismos base heredados de ara::core::Exception por parte de la lógica de aplicación capturadora). Pregunta Q-d20a61b72951321b (abierta)
Esta guía fue seleccionada y editada por una IA sobre la base de la especificación AUTOSAR AP 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