Sert à encapsuler et à signaler des erreurs provenant du module de persistance à l'aide d'un code d'erreur spécifique.
GÉNÉRÉ PAR IAnon vérifiéModèle : gemini-3.8-flash-medium · Effort : medium · Température : non réglable · Prompt : abab05ca22f0ProvenanceQuestions ouvertes (2)
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand
Sert à encapsuler et à signaler des erreurs provenant du module de persistance à l'aide d'un code d'erreur spécifique.
La classe ara::per::PerException sert, dans l'AUTOSAR Adaptive Platform, de type d'exception spécifique pour signaler des erreurs issues du module de persistance. Elle est mise à disposition via l'en-tête ara/per/per_error_domain.h et hérite de la classe de base ara::core::Exception[SWS_PER_00355]. L'instanciation s'effectue explicitement par transmission d'un ara::core::ErrorCode, qui encapsule la cause concrète de l'erreur. Grâce à la déclaration du constructeur comme noexcept, la création est spécifiée comme totalement sûre face aux exceptions ainsi que thread-safe [SWS_PER_00355].
Contexte
La classe ara::per::PerException agit en tant que type d'exception central et spécialisé pour le cluster fonctionnel de la persistance (module per) au sein de l'AUTOSAR Adaptive Platform dans la version R25-11. Selon sa syntaxe formelle, la classe est dérivée publiquement de l'exception de base générale ara::core::Exception. Sa responsabilité première consiste à signaler aux couches applicatives supérieures des états d'erreur graves ou non directement traitables par des valeurs de retour régulières, issus du sous-système de persistance. La classe est définie dans l'en-tête ara/per/per_error_domain.h[SWS_PER_00355]. Dans l'architecture, elle interagit étroitement avec l'infrastructure de traitement des erreurs de la plateforme, chaque instance transportant un ara::core::ErrorCode pour un diagnostic précis de l'erreur [SWS_PER_00355].
Cycle de vie
Le cycle de vie d'un objet ara::per::PerException est directement lié à la détection et à la transmission d'une erreur au sein d'opérations de persistance. L'instanciation s'effectue via un constructeur explicite qui accepte exactement un paramètre de type ara::core::ErrorCode[SWS_PER_00355]. Ce constructeur est déclaré comme explicit afin d'interdire les conversions implicites de type à partir de codes d'erreur, et comporte la spécification noexcept[SWS_PER_00355]. Cela garantit qu'aucune autre exception ne peut survenir pendant la construction de l'objet d'exception lui-même ; la création est ainsi totalement sûre face aux exceptions (exception safe) [SWS_PER_00355].
Concernant la concurrence, la création de ara::per::PerException est spécifiée comme sûre au niveau des threads (thread-safe) [SWS_PER_00355]. Après l'appel du constructeur, l'objet est levé le long de la pile d'appels. La propriété et la destruction suivent les règles standard de C++ pour la gestion des exceptions : l'objet subsiste dans la zone mémoire du système d'exécution jusqu'à ce que le bloc catch d'interception soit terminé, puis est détruit de manière déterministe.
Parcours d'utilisation
Le déroulement typique lors de l'utilisation de ara::per::PerException s'articule selon les étapes suivantes :
Détection de l'erreur et génération du code : Le module de persistance identifie un état inadmissible ou l'échec d'une opération de stockage et le modélise dans un ara::core::ErrorCode correspondant.
Instanciation : En transmettant ce code d'erreur, l'objet d'exception est explicitement créé via PerException(errorCode)[SWS_PER_00355].
Déclenchement de l'exception : Le sous-système de persistance lève l'instance d'exception depuis l'interface fonctionnelle concernée.
Interception et évaluation : L'application appelante intercepte l'objet de manière spécifique en tant que ara::per::PerException ou de manière polymorphique en tant que ara::core::Exception ou std::exception. Interprétation : L'application devrait ensuite lire le ara::core::ErrorCode encapsulé via les méthodes d'accès héritées de la classe de base afin d'engager des mesures correctives ciblées. Question Q-6e48fd125d9938d8 (ouverte)
Scénarios d'erreur
Étant donné que ara::per::PerException sert à la représentation d'erreurs, la robustesse de la création de l'objet et l'intégrité des informations d'erreur sont au premier plan lors des scénarios d'erreur. Comme précondition essentielle, le constructeur requiert un ara::core::ErrorCode valide en paramètre d'entrée [SWS_PER_00355]. Le constructeur étant déclaré comme noexcept, la survenue d'exceptions secondaires pendant la notification d'erreur est exclue [SWS_PER_00355]. En outre, la sécurité des threads spécifiée garantit qu'aucune corruption de données ni aucun effet secondaire non coordonné ne survient, même en cas d'erreurs parallèles dans plusieurs flux d'exécution [SWS_PER_00355].
Ce guide repose exclusivement sur les données de spécification de l'AUTOSAR Adaptive Platform Release 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