Encapsule les codes d'erreur du State Management pour la transmission et le traitement des erreurs fonctionnelles critiques sous la forme d'une exception C++.
GÉNÉRÉ PAR IAnon vérifiéModèle : gemini-3.8-flash-medium · Effort : medium · Température : non réglable · Prompt : 72647117def3ProvenanceQuestions ouvertes (1)
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand
Encapsule les codes d'erreur du State Management pour la transmission et le traitement des erreurs fonctionnelles critiques sous la forme d'une exception C++.
La classe ara::sm::SmException sert à transmettre les situations exceptionnelles qui surviennent lors des opérations du State Management [SWS_SM_81242]. Elle dérive de ara::core::Exception et encapsule un ara::core::ErrorCode spécifique permettant l'identification exacte de la cause de l'erreur survenue. Sa création s'effectue via un constructeur explicite spécifié comme sûr pour les threads et sûr vis-à-vis des exceptions [SWS_SM_81243]. Les applications appelantes interceptent l'objet de manière structurée afin d'analyser le code d'erreur contenu et de déclencher les mesures de reprise appropriées.
Contexte
La classe ara::sm::SmException fait office d'exception centrale pour le cluster fonctionnel State Management dans l'AUTOSAR Adaptive Platform [SWS_SM_81242]. Elle est définie dans l'en-tête ara/sm/sm_error_domain.h et dérive publiquement de la classe d'exception fondamentale de la plateforme ara::core::ExceptionAUTOSAR_AP_SWS_StateManagement §8.1.4 « Class: SmException ». Dans le document, la spécification de la classe figure avec le statut DRAFT [SWS_SM_81242].
Dans le contexte architectural, la classe relie trois rôles centraux : le State Management en tant qu'instance déclenchante lors d'opérations d'état défaillantes, l'application Adaptive appelante en tant que gestionnaire, ainsi que l'infrastructure de base de ara::core, qui fournit l'interface commune pour le traitement des erreurs. En tant que porteuse d'états d'erreur, elle sert à transmettre de manière synchrone les situations d'erreur du module sm aux instances de contrôle de niveau supérieur via le mécanisme d'exception C++.
Cycle de vie
L'instanciation de ara::sm::SmException s'effectue explicitement via le constructeur SmException(ara::core::ErrorCode errorCode)[SWS_SM_81243]. Ce constructeur est déclaré comme noexcept et présente à la fois la propriété de sécurité vis-à-vis des exceptions (exception safe) et celle de sécurité des threads (thread-safe) AUTOSAR_AP_SWS_StateManagement §8.1.4.1.1.1 « SmException ». Cela garantit que la création de l'objet d'exception lui-même n'échoue pas et ne lève aucune autre exception, même lorsqu'il est créé dans des contextes d'exécution concurrents.
Après sa création, l'instance est habituellement levée par valeur (by value) et interceptée dans le contexte appelant en tant que référence à des objets constants (const ara::sm::SmException& ou de manière polymorphe comme const ara::core::Exception&). Étant donné que la spécification ne définit aucun destructeur spécifique ni routine de nettoyage manuel, la destruction de l'objet d'exception devrait, selon l'interprétation, suivre intégralement la sémantique standard de C++ et les mécanismes de la classe de base ara::core::Exception dès que le bloc de traitement concerné est quitté. Question Q-85b1fd2f6082db8e (ouverte)
Parcours d'utilisation
Le déroulement typique commence au niveau d'un composant applicatif ou de plateforme qui adresse une requête de commande d'état au State Management. Si le changement d'état demandé ne peut pas être exécuté en interne ou si une erreur d'exception critique survient, le State Management instancie un exemplaire de ara::sm::SmException en indiquant le ara::core::ErrorCode[SWS_SM_81243] correspondant.
Diagramme de séquence : signalisation et traitement typiques d'une erreur au moyen de SmException dans le State Management. Sources : [SWS_SM_81242], [SWS_SM_81243].
Le composant appelant intercepte l'exception levée dans un bloc catch correspondant. Grâce aux méthodes héritées de la classe de base ara::core::Exception, l'application peut inspecter le ara::core::ErrorCode encapsulé afin d'associer sémantiquement la cause de l'erreur et de déclencher des mesures ciblées pour corriger l'erreur ou rétablir l'état du système.
Scénarios d'erreur
La classe ara::sm::SmException ne représente pas elle-même un élément opérationnel sujet aux pannes, mais constitue l'objet porteur principal pour les situations exceptionnelles au sein du State Management [SWS_SM_81242]. Une précondition essentielle à la création est la fourniture d'un objet ara::core::ErrorCode initialisé lors de l'appel du constructeur [SWS_SM_81243].
Si une ara::sm::SmException levée n'est interceptée par aucun gestionnaire approprié dans la pile d'appels, cela conduit, selon les règles standard du C++, à l'appel de std::terminate et ainsi à l'interruption non contrôlée du processus concerné. Dans les implémentations qui imposent de renoncer aux exceptions au profit de ara::core::Result, la levée est évitée ; toutefois, si le chemin d'exception est disponible, l'encapsulation garantit que le code d'erreur d'origine est transmis intact pour le diagnostic d'erreur.
Ce guide de classe est basé sur la spécification AUTOSAR Adaptive R25-11. Toutes les indications s'appuient sur les points de spécification référencés.
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