Encapsule les codes d'erreur du Platform Health Management sous forme d'exception thread-safe pour les opérations de module ayant échoué.
GÉNÉRÉ PAR IAnon vérifiéModèle : gemini-3.8-flash-medium · Effort : medium · Température : non réglable · Prompt : 9c0b25d6fb92ProvenanceQuestions ouvertes (2)
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand
Encapsule les codes d'erreur du Platform Health Management sous forme d'exception thread-safe pour les opérations de module ayant échoué.
La classe ara::phm::PhmException sert, au sein du Platform Health Management, de type d'exception central pour encapsuler et transmettre des erreurs spécifiques au module aux composants appelants. Lors de la détection d'une erreur, elle est explicitement instanciée avec un ara::core::ErrorCode et levée afin de permettre un traitement structuré des erreurs via des blocs catch correspondants [SWS_PHM_01243]. En tant que contrainte essentielle, sa construction est spécifiée comme noexcept, thread-safe et exception-safe, ce qui exclut les erreurs secondaires lors de la création de l'exception [SWS_PHM_01243]. Interprétation : Les appelants interceptent typiquement l'objet par référence afin d'évaluer de manière déterministe le code d'erreur contenu, sans allocation dynamique de mémoire. Question (ouverte)
Contexte
La classe ara::phm::PhmException fait office de type d'exception dédié pour le Platform Health Management (PHM) au sein de l'AUTOSAR Adaptive Platform. Conformément à la définition de la classe, celle-ci dérive publiquement de ara::core::Exception et constitue le lien permettant de communiquer les états d'erreur du module phm aux composants système et applicatifs appelants via le mécanisme standardisé d'exception C++. Dans l'architecture système, la classe interagit principalement entre les services opérationnels du PHM, qui exécutent des fonctions de surveillance et détectent des états d'erreur en cas de violation de règles, et les routines de traitement des erreurs de niveau supérieur de l'application. L'intégration dans le modèle fondamental de traitement des erreurs de ara::core garantit que les rapports d'erreur propres au domaine issus du Platform Health Management peuvent être transportés et traités de manière uniforme.
Cycle de vie
Le cycle de vie d'une instance de ara::phm::PhmException commence par l'instanciation explicite en cas d'erreur. Conformément à [SWS_PHM_01243], l'objet est créé via le constructeur PhmException(ara::core::ErrorCode errorCode) avec inclusion de l'en-tête ara/phm/phm_error_domain.h. La création est déclarée comme noexcept et présente à la fois les propriétés « exception safe » et « thread-safe » [SWS_PHM_01243]. Cela garantit que l'instanciation de l'objet d'exception s'effectue en toute sécurité, même en cas de forte concurrence, et ne déclenche à aucun moment d'exceptions secondaires inattendues.
L'objet encapsule le ara::core::ErrorCode transmis et possède un état immuable après sa création. Pendant le déroulement de la pile, l'objet d'exception est transporté par l'environnement d'exécution. La destruction s'effectue de manière déterministe lors de la sortie du bloc catch de traitement, conformément aux règles standard du C++. Interprétation : Les instances devraient habituellement être créées directement dans l'expression throw sur la pile et interceptées par référence (const ara::phm::PhmException&), de sorte qu'aucune gestion de mémoire dynamique n'est requise du côté de l'appelant. Question Q-37fc47021a78a0db (ouverte)
Parcours d'utilisation
Le chemin d'utilisation typique commence lorsqu'une opération surveillée du Platform Health Management échoue ou qu'un écart d'état non autorisé est constaté. La fonction du PHM déclenchante initialise alors un objet d'exception avec le code d'erreur associé et le lève depuis [SWS_PHM_01243]. Du côté de l'appelant, la section de code protégée est exécutée au sein d'un bloc try-catch. Vraisemblablement, les applications interceptent l'exception soit de manière spécifique en tant que ara::phm::PhmException, soit de manière polymorphique via la classe de base ara::core::Exception. Question Q-54638c0dde7d9195 (ouverte) Dans le gestionnaire d'exceptions, le ara::core::ErrorCode contenu est extrait afin d'analyser la cause et d'engager les contre-mesures ou stratégies de mode dégradé appropriées.
Diagramme de séquence : Déroulement typique depuis la détection d'erreur dans le PHM jusqu'à l'évaluation dans le gestionnaire en passant par le déclenchement de ara::phm::PhmException. Sources : [SWS_PHM_01243].
Scénarios d'erreur
Le transport du code d'erreur au moment de l'exécution constitue un composant central de ara::phm::PhmException. La transmission d'un ara::core::ErrorCode valide constitue une précondition pour la création de l'objet [SWS_PHM_01243]. La postcondition de l'appel est un objet d'exception complètement initialisé qui met à disposition le code d'erreur transmis, sans modification, pour consultation.
Le constructeur étant explicitement spécifié comme noexcept et « exception safe » [SWS_PHM_01243], la survenue d'exceptions pendant la construction de l'exception elle-même est exclue. Un échec de la création de l'objet ne peut donc pas se produire, ce qui empêche une interruption prématurée via std::terminate pendant le rapport d'erreur. De plus, la sécurité des threads spécifiée (« thread-safe ») protège contre la corruption de données lorsque plusieurs threads signalent en parallèle des états d'erreur via leurs propres exceptions [SWS_PHM_01243]. Par conséquent, les scénarios d'erreur ne concernent pas la classe d'exception elle-même, mais reflètent les causes d'erreur fonctionnelles qui sont encodées dans le ara::core::ErrorCode encapsulé du domaine d'erreur du PHM.
Ce guide a été généré par une IA sur la base de la spécification d'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