Signale les erreurs de diagnostic spécifiques à SOVD aux appelants sous la forme d'une exception sûre vis-à-vis des exceptions avec un code d'erreur associé.
GÉNÉRÉ PAR IAnon vérifiéModèle : gemini-3.8-flash-medium · Effort : medium · Température : non réglable · Prompt : 58783cae6416ProvenanceQuestions ouvertes (2)
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand
Signale les erreurs de diagnostic spécifiques à SOVD aux appelants sous la forme d'une exception sûre vis-à-vis des exceptions avec un code d'erreur associé.
La classe ara::diag::DiagSovdException sert de type d'exception spécialisé pour le diagnostic de véhicule orienté services (Service-Oriented Vehicle Diagnostics, SOVD) et est levée par les classes de diagnostic du module diag pour la signalisation des erreurs [SWS_DM_01807]. Elle dérive de ara::core::Exception et est explicitement instanciée avec un ara::core::ErrorCode en cas de situation d'erreur afin de transmettre les informations d'erreur au contexte appelant via le déroulement de pile C++ [SWS_DM_01808]. Comme contrainte centrale, le constructeur est spécifié comme étant noexcept, garantissant ainsi une sécurité complète vis-à-vis des exceptions ainsi que la sécurité vis-à-vis des threads lors de la création de l'objet.
Contexte
La classe ara::diag::DiagSovdException représente le type d'exception central pour le diagnostic de véhicule orienté services (SOVD) dans le module Diagnostics de l'AUTOSAR Adaptive Platform ([SWS_DM_01807], SWS Diagnostics §8.51.4 « Class: DiagSovdException »). Elle est déclenchée par des classes de diagnostic internes pour indiquer des états d'erreur spécifiques pendant le traitement de requêtes SOVD ([SWS_DM_01807], SWS Diagnostics, p. 69).
La classe dérive publiquement de l'exception de base générale ara::core::Exception ([SWS_DM_01807], SWS Diagnostics §8.51.4). Parmi ses partenaires d'interaction directs figurent les classes de diagnostic fonctionnelles du module diag, qui analysent les requêtes de diagnostic et lèvent des exceptions en cas d'erreur, ainsi que le logiciel d'application appelant, qui doit intercepter et traiter ces exceptions. La classe est déclarée dans l'en-tête ara/diag/diag_sovd_error_domain.h afin de répondre aux exigences architecturales de niveau supérieur ([SWS_DM_01808], SWS Diagnostics §8.51.4.1.1.1 « DiagSovdException »).
Cycle de vie
L'instanciation de ara::diag::DiagSovdException s'effectue via un constructeur qui reçoit obligatoirement un ara::core::ErrorCode comme paramètre err ([SWS_DM_01808], SWS Diagnostics §8.51.4.1.1.1). Ce constructeur est déclaré comme explicit afin d'empêcher les conversions implicites de codes d'erreur en objets d'exception, et marqué comme noexcept ([SWS_DM_01808]).
En matière de robustesse et de concurrence, la spécification garantit que la construction est totalement sûre vis-à-vis des exceptions (exception safe) et thread-safe ([SWS_DM_01808]). Ainsi, il est garanti que la génération d'erreurs elle-même ne provoque pas d'autres exceptions ou incohérences, même dans des scénarios de diagnostic concurrents. Le cycle de vie de l'exception suit le déroulement de pile standard du C++ : l'objet est créé en cas d'erreur au sein d'une fonction de diagnostic, transmis à travers les niveaux d'appel et détruit de manière déterministe lors de la sortie du bloc catch de traitement.
Parcours d'utilisation
Le déroulement typique lors de l'utilisation de ara::diag::DiagSovdException s'articule selon les étapes suivantes :
Une application initie une opération de diagnostic liée à SOVD sur une interface du module diag.
Le composant de diagnostic compétent constate une condition d'erreur et génère un ara::core::ErrorCode approprié à partir du domaine d'erreur SOVD ([SWS_DM_01808]).
Le composant construit l'exception au moyen de explicit DiagSovdException(err) et la lève ([SWS_DM_01808], [SWS_DM_01807]).
L'application intercepte l'exception via catch (const ara::diag::DiagSovdException& ex) ou de manière polymorphe via const ara::core::Exception& afin de réagir à l'état d'erreur.
Diagramme de séquence : Séquence d'appel et de traitement lors du déclenchement d'une DiagSovdException. Sources : [SWS_DM_01807], [SWS_DM_01808].
Scénarios d'erreur
En tant que transporteur d'erreur, la classe sert elle-même au traitement d'états d'exception ([SWS_DM_01807]). La mise à disposition d'un ara::core::ErrorCode initialisé constitue une précondition formelle pour la création ([SWS_DM_01808]). Comme le constructeur est déclaré en tant que noexcept, aucune exception ne survient lors de la création même de l'objet ([SWS_DM_01808]).
Interprétation : l'instance encapsule vraisemblablement le code d'erreur transmis de façon permanente, de sorte que les gestionnaires d'erreurs en aval peuvent l'inspecter via les fonctions héritées de ara::core::Exception. Question Q-332b95b96849e379 (ouverte) Dans les configurations de système où les exceptions C++ sont désactivées, le composant de diagnostic devrait privilégier des mécanismes d'erreur alternatifs, tandis que DiagSovdException constitue le chemin dédié aux traitements par exceptions.
Ce guide se base sur la spécification AUTOSAR Adaptive Platform R25-11 et résume les exigences relatives au traitement des exceptions de SOVD.
Diagramme de classes UML
Hohle Dreieckspfeile = Vererbung (zeigt zur Basisklasse); Klicken öffnet die jeweilige Klassenseite.
gemini-3.8-flash-low· 2026-10-13 · Original allemand