Sert de type d'exception pour signaler les erreurs du Core et encapsule un code d'erreur pour une gestion structurée des exceptions.
GÉNÉRÉ PAR IAnon vérifiéModèle : gemini-3.8-flash-medium · Effort : medium · Température : non réglable · Prompt : 2b622ea04d25ProvenanceQuestions ouvertes (2)
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand
Sert de type d'exception pour signaler les erreurs du Core et encapsule un code d'erreur pour une gestion structurée des exceptions.
La classe ara::core::CoreException sert de type d'exception central pour la transmission des erreurs provenant du domaine fonctionnel ara::core et dérive à cet effet de la classe de base Exception. L'instanciation s'effectue obligatoirement via le constructeur en lui passant un ErrorCode spécifique, qui encapsule la cause de l'erreur [SWS_CORE_05212]. Comme contrainte essentielle, l'implémentation garantit une sécurité totale vis-à-vis des threads (thread safety) et des exceptions (exception safety), ainsi qu'une garantie sans exception noexcept lors de la création [SWS_CORE_05212]. Les appelants interceptent l'exception afin de traiter de manière contrôlée l'état d'erreur contenu.
Contexte
La classe ara::core::CoreException sert de type d'exception central pour les erreurs survenant au sein du domaine fonctionnel ara::core. Conformément à la déclaration de la classe, elle dérive publiquement de la classe de base Exception. La tâche essentielle de CoreException consiste à transposer dans le modèle de traitement des exceptions de C++ un événement d'erreur survenu, décrit par un objet ErrorCode. Dans le contexte de la plateforme, la classe agit ainsi comme un pont entre le composant d'infrastructure détectant l'erreur et le code d'application ou de plateforme appelant. Lorsqu'une opération échoue dans ara::core et que l'interface prévoit une exception, CoreException est instanciée et signalée. Ce faisant, le constructeur reçoit, conformément à [SWS_CORE_05212], un objet concret de type ErrorCode qui encapsule la cause métier et le domaine de l'erreur survenue. L'intégration dans la hiérarchie de classes permet aux couches architecturales supérieures d'intercepter les erreurs soit de manière spécifique en tant que CoreException, soit de les traiter de manière générique via la classe de base Exception.
Diagramme de contexte : relation de CoreException avec ErrorCode et la classe de base Exception. Sources : [SWS_CORE_05212]
Cycle de vie
Le cycle de vie d'une instance de CoreException débute dans le contexte de la détection d'erreur. La création s'effectue via le constructeur explicit CoreException(ErrorCode err) noexcept conformément à [SWS_CORE_05212]. Le mot-clé explicit empêche toute conversion implicite à partir d'un ErrorCode, forçant ainsi une création d'objet délibérée. Une caractéristique essentielle de la construction est sa spécification en tant que noexcept[SWS_CORE_05212] : l'instanciation elle-même ne peut déclencher aucune exception supplémentaire, ce qui garantit une génération fiable de l'exception, même dans des états système critiques. De plus, la sécurité vis-à-vis des exceptions est classée comme totalement sûre (exception safe) et l'opération est considérée comme thread-safe (thread-safe) [SWS_CORE_05212]. Après sa création, l'objet exception est habituellement transmis au moyen de throw. Pendant le déroulement de la pile (stack unwinding), l'exception est acheminée jusqu'à ce qu'elle soit liée par un gestionnaire d'exceptions approprié. Le cycle de vie prend fin à la sortie du bloc de capture, après quoi la destruction de l'objet exception s'accomplit de manière déterministe.
Parcours d'utilisation
Le chemin d'utilisation nominal de CoreException se divise en trois phases successives : diagnostic, levée et capture. Tout d'abord, un composant du module core identifie un écart par rapport au comportement attendu et instancie un ErrorCode correspondant. Ensuite, l'exception est créée en appelant le constructeur CoreException(err)[SWS_CORE_05212]. Immédiatement après, l'objet est levé dans le contexte d'exécution. Au niveau applicatif, l'appel est exécuté dans un bloc protégé. Si le cas d'exception se produit, un bloc catch intercepte l'instance – typiquement sous la forme d'une référence constante sur CoreException ou de manière polymorphe via la classe de base Exception. Dans le gestionnaire, l'erreur peut être analysée, journalisée ou corrigée. Comme le fichier d'en-tête #include "ara/core/core_error_domain.h" est prescrit conformément à [SWS_CORE_05212], la déclaration de la classe est mise à disposition de façon cohérente pour les modules d'application.
Scénarios d'erreur
Dans le domaine des scénarios d'erreur, CoreException sert elle-même de vecteur de signalement et ne lève aucune erreur secondaire pendant sa propre création. Comme le constructeur est déclaré comme noexcept[SWS_CORE_05212], le scénario d'un échec de construction est exclu. La spécification garantit une sécurité stricte vis-à-vis des exceptions et des threads [SWS_CORE_05212], de sorte que l'accès concurrent lors de la création reste également sans risque. Un scénario d'erreur critique survient au niveau du système lorsqu'une CoreException levée n'est interceptée par aucune portée supérieure, ce qui devrait conduire en C++ standard à l'appel de std::terminate. Les développeurs doivent donc s'assurer que les appels aux fonctions ara::core susceptibles de lever des exceptions sont encapsulés dans des blocs de traitement d'exceptions appropriés. Un autre scénario potentiel concerne la transmission au-delà des frontières de composants, où le ErrorCode contenu doit être correctement interprété afin d'engager des mesures correctives adéquates. Question Q-492683ca01bebc7d (ouverte)
Ce guide a été généré par un assistant de curation IA sur la base d’AUTOSAR R25-11.
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