Encapsule les codes d'erreur de l'Execution Management sous la forme d'une exception C++ pour le traitement synchrone des erreurs.
GÉNÉRÉ PAR IAnon vérifiéModèle : gemini-3.8-flash-medium · Effort : medium · Température : non réglable · Prompt : e102ca6cc8edProvenanceQuestions ouvertes (3)
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand
Encapsule les codes d'erreur de l'Execution Management sous la forme d'une exception C++ pour le traitement synchrone des erreurs.
La classe ara::exec::ExecException sert de classe d'exception finale de l'Execution Management pour encapsuler et signaler les erreurs spécifiques au module via le mécanisme d'exception C++. En cas d'erreur, des instances sont créées et levées en indiquant un ara::core::ErrorCode via le constructeur sûr au niveau des threads (thread-safe), après quoi les entités appelantes les interceptent et les analysent [SWS_EM_02283]. Comme condition aux limites fondamentale, la construction est spécifiée comme noexcept, garantissant que la création d'objet reste exempte d'exceptions [SWS_EM_02283]. Les exceptions non traitées doivent être évitées, car elles entraînent l'arrêt du système.
Contexte
La classe ara::exec::ExecException constitue la classe d'exception centrale du module Execution Management (exec) au sein de l'AUTOSAR Adaptive Platform. Conformément à sa spécification, elle sert d'encapsulation pour les exceptions déclenchées par l'Execution Management. La déclaration de classe la définit en tant que final avec dérivation publique de la classe d'exception de base standard ara::core::Exception, ce qui lui permet de s'intégrer de manière transparente dans le concept uniforme d'exception et de traitement des erreurs de l'Adaptive Platform. Grâce à l'identifiant final, toute spécialisation ou sous-classification ultérieure est exclue.
La classe d'exception est déclarée dans l'en-tête #include "ara/exec/exec_error_domain.h"[SWS_EM_02283]. La responsabilité fonctionnelle principale de ara::exec::ExecException réside dans le transport d'états d'erreur spécifiques au module par le biais du mécanisme d'exception C++. Interprétation : La levée de cette exception devrait principalement intervenir dans des environnements d'exécution où les états d'erreur de l'Execution Management ne sont pas uniquement propagés via des types d'erreur basés sur les valeurs, mais où une interruption synchrone du flux de contrôle via des exceptions C++ est requise. Question Q-8faec8c282524965 (ouverte)
Cycle de vie
Le cycle de vie d'une instance de ara::exec::ExecException commence par une construction explicite avec transmission d'un code d'erreur. Le constructeur explicit ExecException(ara::core::ErrorCode errorCode) noexcept génère un nouvel objet d'exception qui encapsule le code d'erreur transmis [SWS_EM_02283]. La désignation comme noexcept garantit que la création de l'objet reste sans échec, même dans le contexte d'un traitement d'erreurs déjà existant, et ne déclenche pas d'erreurs consécutives en cascade [SWS_EM_02283].
En ce qui concerne la sécurité d'exécution, la construction est explicitement classée comme sûre face aux exceptions (« exception safe ») et sûre pour les threads (« thread-safe ») [SWS_EM_02283]. Cela permet la création fiable d'instances d'exception à travers différents threads, sans qu'aucun mécanisme de synchronisation supplémentaire ne soit nécessaire. Après son déclenchement via throw, l'objet passe sous la gestion du système d'exécution C++. Interprétation : La destruction de l'objet d'exception s'effectue automatiquement après la sortie du bloc catch de traitement lors du déroulement régulier de la pile (stack unwinding), raison pour laquelle aucune gestion explicite du cycle de vie par l'appelant n'est requise. Question Q-ec22ad5f177555aa (ouverte)
Parcours d'utilisation
Un chemin d'utilisation typique de ara::exec::ExecException comprend l'instanciation en cas d'erreur au sein de l'Execution Management ainsi que l'interception contrôlée dans le contexte applicatif appelant :
Identification de l'erreur et instanciation : Si une condition d'exception survient dans l'Execution Management, la cause est représentée dans un ara::core::ErrorCode du domaine d'erreur associé et utilisée pour l'initialisation explicite d'une ara::exec::ExecException[SWS_EM_02283].
Signalement : L'instance d'exception initialisée est levée, ce qui interrompt le chemin d'exécution régulier et amorce le déroulement de la pile.
Interception : Les composants appelants interceptent l'objet d'exception soit de manière ciblée en tant que const ara::exec::ExecException&, soit de manière plus générale via la classe de base polymorphique const ara::core::Exception&.
Évaluation : Interprétation : Étant donné que l'objet a été construit avec un ara::core::ErrorCode[SWS_EM_02283] et hérite de ara::core::Exception, le destinataire devrait extraire le code d'erreur contenu via les interfaces de la classe de base afin d'appliquer des mesures de récupération ou de journalisation spécifiques au module. Question Q-d4671c34f5aab6f9 (ouverte)
Scénarios d'erreur
En tant que classe d'exception spécialisée, ara::exec::ExecException est conçue pour représenter des situations d'erreur existantes sans induire de nouvelles erreurs lors de sa propre utilisation. Pour la création, le constructeur exige la transmission d'un ara::core::ErrorCode[SWS_EM_02283]. Étant donné que le constructeur est déclaré comme noexcept, les erreurs de préconditions susceptibles d'entraver la création de l'objet d'exception lors de l'instanciation sont exclues [SWS_EM_02283].
Un scénario d'erreur majeur au niveau du système réside dans l'interception incomplète des exceptions levées. Si une exception déclenchée par ara::exec::ExecException reste non traitée le long de la hiérarchie d'appels, le traitement d'exécution standard de C++ intervient, ce qui aboutit typiquement à l'appel de std::terminate et donc à l'interruption prématurée du processus. Les composants logiciels en interaction doivent par conséquent s'assurer que les appels aux fonctions potentiellement émettrices d'exceptions de l'Execution Management sont sécurisés par des blocs try-catch adéquats.
Ce guide a été généré par une IA sur la base de la spécification AUTOSAR Adaptive Platform 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