Sert de classe d'exception d'API pour encapsuler et signaler les erreurs de gestion de communication via des codes d'erreur.
GÉNÉRÉ PAR IAnon vérifiéModèle : gemini-3.8-flash-medium · Effort : medium · Température : non réglable · Prompt : becb2133e102ProvenanceQuestions ouvertes (2)
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand
Sert de classe d'exception d'API pour encapsuler et signaler les erreurs de gestion de communication via des codes d'erreur.
Dans AUTOSAR Adaptive, la classe ara::com::ComException sert de classe d'exception centrale pour signaler les erreurs lors des appels à l'API de communication [SWS_CM_11327]. Elle encapsule un ara::core::ErrorCode et est instanciée et levée lors d'opérations ayant échoué, son constructeur étant défini comme sûr vis-à-vis des exceptions et ne levant pas d'exception [SWS_CM_11328]. Si les exceptions C++ sont désactivées dans la chaîne d'outils du compilateur, les surcharges d'API levantes correspondantes sont entièrement exclues de la résolution de surcharge. Les appelants interceptent l'objet exception afin d'analyser le code d'erreur contenu et d'engager des mesures de traitement d'erreur.
Contexte
Dans le module com de l'AUTOSAR Adaptive Platform, la classe ara::com::ComException sert de classe d'exception spécialisée pour signaler les erreurs lors des appels à l'API de communication [SWS_CM_11327]. Elle dérive publiquement de la classe de base ara::core::Exception et est déclarée comme final. Cela illustre son intégration directe dans l'architecture globale de traitement des erreurs de l'Adaptive Platform. Étant marquée comme final, la classe est probablement conçue comme un type d'exception scellé qui n'est pas destiné à une hiérarchie de dérivation supplémentaire. Question Q-2454b5b73295287b (ouverte)
Le rôle principal de ara::com::ComException consiste à encapsuler un état d'erreur survenu sous la forme d'un ara::core::ErrorCode et à le transmettre aux couches appelantes via le mécanisme d'exception C++ [SWS_CM_11328]. La déclaration et la définition sont fournies via l'en-tête #include "ara/com/com_error_domain.h"[SWS_CM_11328]. Le logiciel d'application utilisateur, les fonctions internes de service et d'API de la gestion de communication ainsi que les types du domaine d'erreur ara::core::ErrorCode agissent ici en tant que partenaires d'interaction centraux.
Cycle de vie
Le cycle de vie d'un objet ara::com::ComException commence dans l'implémentation d'une fonction d'API de la gestion de communication dès qu'une opération échoue et que l'exception est instanciée et déclenchée AUTOSAR_AP_SWS_CommunicationManagement §8.12.5 « Class: ComException ». La création s'effectue via le constructeur explicite, qui prend en charge l'objet ara::core::ErrorCode déclencheur [SWS_CM_11328].
Ce constructeur est déclaré avec noexcept et possède la propriété exception safe[SWS_CM_11328]. Cela garantit qu'aucune autre exception ne peut survenir pendant la construction de l'objet exception lui-même. Après avoir été levé par throw, l'objet est transporté dans le cadre du déroulement de pile (stack unwinding) jusqu'à ce qu'il soit lié dans un bloc catch approprié de la couche appelante. En ce qui concerne les relations de propriété, l'instance est automatiquement détruite sur la pile après la sortie du bloc traitant. La classe ne présente pas de transitions d'état internes au sens d'une machine à états ; son état reste immuable après l'initialisation avec le code d'erreur.
Parcours d'utilisation
Le chemin d'utilisation typique décrit le déroulement de la détection de l'erreur, du déclenchement de l'exception et de son traitement ultérieur :
Une fonction d'application appelle une opération de l'interface ara::com.
L'application intercepte l'exception dans un bloc adapté. Côté application, l'interception s'effectue probablement par référence constante (const ara::com::ComException&) afin d'éviter les opérations de copie. Question Q-5270e026eeac8be7 (ouverte)
Via l'interface de la classe de base, l'appelant accède au ara::core::ErrorCode contenu et exécute des étapes de diagnostic ou de compensation [SWS_CM_11328].
Dans le contexte du traitement des erreurs et de la configuration de la chaîne d'outils, les conditions et cas limites suivants s'appliquent :
Exceptions C++ désactivées : si les exceptions C++ sont désactivées dans la chaîne d'outils du compilateur, les fonctions d'API créant et levant ara::com::ComException ne participent pas à la résolution de surcharge selon [SWS_CORE_10304]AUTOSAR_AP_SWS_CommunicationManagement §8.12.5 « Class: ComException ». Dans ce cas, le logiciel gérant les erreurs recourt à des mécanismes de retour alternatifs.
Sécurité de typage du constructeur : le constructeur étant déclaré comme explicit, les conversions de type implicites lors de la transmission du ara::core::ErrorCode sont empêchées [SWS_CM_11328].
Interception hiérarchique : comme ara::com::ComException hérite de ara::core::Exception, les appelants peuvent traiter les exceptions soit spécifiquement en tant que ara::com::ComException, soit de manière générale via des gestionnaires pour la classe de base.
Ce guide est basé sur la spécification AUTOSAR Adaptive R25-11. Toutes les indications et références reposent exclusivement sur les extraits de spécification fournis.
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