Señaliza errores de diagnóstico específicos de SOVD como excepción segura frente a excepciones con código de error asociado al llamador.
GENERADO POR IAno revisadoModelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: 58783cae6416ProcedenciaPreguntas abiertas (2)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán
Señaliza errores de diagnóstico específicos de SOVD como excepción segura frente a excepciones con código de error asociado al llamador.
La clase ara::diag::DiagSovdException sirve como tipo de excepción especializado para Service-Oriented Vehicle Diagnostics (SOVD) y es desencadenada por clases de diagnóstico en el módulo diag para la señalización de errores [SWS_DM_01807]. Deriva de ara::core::Exception y, en situaciones de error, se instancia explícitamente con un ara::core::ErrorCode para transmitir información de error al contexto llamador mediante el stack unwinding de C++ [SWS_DM_01808]. Como condición de contorno central, el constructor está especificado como noexcept y garantiza así una seguridad completa frente a excepciones, así como seguridad para subprocesos durante la creación del objeto.
Contexto
La clase ara::diag::DiagSovdException representa el tipo de excepción central para Service-Oriented Vehicle Diagnostics (SOVD) en el módulo de diagnóstico de la AUTOSAR Adaptive Platform ([SWS_DM_01807], SWS Diagnostics §8.51.4 «Class: DiagSovdException»). Es desencadenada por clases de diagnóstico internas para indicar estados de error específicos durante el procesamiento de solicitudes SOVD ([SWS_DM_01807], SWS Diagnostics, p. 69).
La clase deriva públicamente de la excepción base general ara::core::Exception ([SWS_DM_01807], SWS Diagnostics §8.51.4). Entre sus interlocutores directos de interacción se encuentran las clases funcionales de diagnóstico del módulo diag, que analizan solicitudes de diagnóstico y desencadenan excepciones en caso de errores, así como el software de aplicación llamador, que debe capturar y procesar dichas excepciones. La clase está declarada en la cabecera ara/diag/diag_sovd_error_domain.h para satisfacer requisitos arquitectónicos de nivel superior ([SWS_DM_01808], SWS Diagnostics §8.51.4.1.1.1 «DiagSovdException»).
Ciclo de vida
La instanciación de ara::diag::DiagSovdException se realiza a través de un constructor que acepta obligatoriamente un ara::core::ErrorCode como parámetro err ([SWS_DM_01808], SWS Diagnostics §8.51.4.1.1.1). Este constructor está declarado como explicit para evitar conversiones implícitas de códigos de error a objetos de excepción, y está marcado como noexcept ([SWS_DM_01808]).
En cuanto a robustez y concurrencia, la especificación garantiza que la construcción es completamente segura frente a excepciones (exception safe) y para subprocesos ([SWS_DM_01808]). Esto garantiza que la propia generación de errores no provoque excepciones adicionales ni inconsistencias, incluso en escenarios de diagnóstico concurrentes. El ciclo de vida de la excepción sigue el desenrollado de pila estándar de C++: el objeto se crea en caso de error dentro de una función de diagnóstico, se propaga a través de los niveles de llamada y se destruye de manera determinista al salir del bloque catch correspondiente.
Ruta de uso
El flujo típico al utilizar ara::diag::DiagSovdException se divide en los siguientes pasos:
Una aplicación inicia una operación de diagnóstico relativa a SOVD en una interfaz del módulo diag.
El componente de diagnóstico responsable detecta una condición de error y genera un ara::core::ErrorCode adecuado a partir del dominio de errores de SOVD ([SWS_DM_01808]).
El componente construye la excepción mediante explicit DiagSovdException(err) y la lanza ([SWS_DM_01808], [SWS_DM_01807]).
La aplicación captura la excepción mediante catch (const ara::diag::DiagSovdException& ex) o de forma polimórfica mediante const ara::core::Exception& para reaccionar al estado de error.
Diagrama de secuencia: secuencia de llamada y tratamiento al desencadenarse una DiagSovdException. Fuentes: [SWS_DM_01807], [SWS_DM_01808].
Escenarios de error
Como transportador de errores, la propia clase sirve para el tratamiento de estados excepcionales ([SWS_DM_01807]). La provisión de un ara::core::ErrorCode inicializado actúa como condición previa formal para su creación ([SWS_DM_01808]). Dado que el constructor está declarado como noexcept, no se producen excepciones durante la propia creación del objeto ([SWS_DM_01808]).
Interpretación: probablemente la instancia encapsula el código de error transferido de forma permanente, de modo que los gestores de errores posteriores puedan inspeccionarlo a través de funciones heredadas de ara::core::Exception. Pregunta Q-332b95b96849e379 (abierta) En configuraciones de sistema con excepciones de C++ desactivadas, es de suponer que el componente de diagnóstico prefiera mecanismos de error alternativos, mientras que DiagSovdException representa la ruta designada para el tratamiento de excepciones.
Esta guía se basa en la especificación AUTOSAR Adaptive Platform R25-11 y resume los requisitos para el tratamiento de excepciones de SOVD.
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