Définit le domaine d'erreur du module de persistance pour la mise à disposition de codes d'erreur, de descriptions textuelles et d'exceptions.
GÉNÉRÉ PAR IAnon vérifiéModèle : gemini-3.8-flash-medium · Effort : medium · Température : non réglable · Prompt : da81ed3d3cb6ProvenanceQuestions ouvertes (1)
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand
Définit le domaine d'erreur du module de persistance pour la mise à disposition de codes d'erreur, de descriptions textuelles et d'exceptions.
La classe ara::per::PerErrorDomain définit le domaine d'erreur pour le module de persistance et associe des codes d'erreur à des messages descriptifs ainsi qu'à des types d'exceptions [SWS_PER_00411]. Elle permet, via des interfaces thread-safe, de consulter le nom de domaine ainsi que de résoudre des descriptions d'erreur pour des valeurs d'erreur concrètes. En cas de besoin, elle convertit les erreurs en exceptions C++ via ThrowAsException()[SWS_PER_00350]. Si les exceptions sont désactivées dans la chaîne d'outils du compilateur, cette fonction de déclenchement n'est pas disponible, de sorte que la vérification des erreurs doit s'effectuer purement sur la base des valeurs de retour.
Contexte
La classe ara::per::PerErrorDomain définit le domaine d'erreur spécifique pour le module de persistance (Persistency) au sein d'AUTOSAR Adaptive Platform. Elle hérite de la définition de type de base ara::core::ErrorDomain et est déclarée comme final, constituant ainsi la base du traitement typé des erreurs et de la mise en correspondance des erreurs de l'ensemble des opérations liées à la persistance. Par l'intermédiaire des alias de types standardisés Errc[SWS_PER_00411] pour l'énumération de codes d'erreur sous-jacente PerErrc ainsi que Exception[SWS_PER_00412] pour la classe de base d'exception spécifique au module PerException, la classe relie des valeurs d'erreur numériques, des messages d'erreur explicites et des objets d'exception C++ concrets. Dans l'architecture de la plateforme, le domaine d'erreur interagit étroitement avec les services de persistance, les clusters fonctionnels appelants ainsi que les structures d'erreur et de résultat génériques issues de ara::core.
Cycle de vie
La création d'une instance s'effectue via le constructeur standard PerErrorDomain()[SWS_PER_00313]. Ce constructeur est déclaré comme noexcept, entièrement sûr vis-à-vis des exceptions (exception safe) et thread-safe (thread-safe). Interprétation : l'instance de PerErrorDomain devrait typiquement être gérée comme un objet durable ou global afin de garantir, pendant tout le fonctionnement, des comparaisons de domaines et des résolutions de types cohérentes pour les erreurs de persistance. Question Q-5d90982fddec40a7 (ouverte) Étant donné que toutes les opérations de consultation de la classe sont également classées comme thread-safe, plusieurs threads peuvent accéder en parallèle à la même instance de domaine sans que des mécanismes de synchronisation supplémentaires ne soient requis au niveau de l'appelant.
Parcours d'utilisation
Un chemin d'utilisation typique comprend l'identification du domaine, la consultation d'informations de diagnostic compréhensibles et, optionnellement, le déclenchement d'exceptions en cas d'erreurs survenues dans le module de persistance. Tout d'abord, la fonction membre Name() renvoie l'identifiant unique du domaine d'erreur sous la forme d'une chaîne de caractères [SWS_PER_00314] ; elle est spécifiée comme noexcept, sûre vis-à-vis des exceptions et thread-safe. Si une erreur survient lors d'une opération de persistance, sa valeur d'erreur numérique est résolue via Message()[SWS_PER_00315]. Cette méthode prend en paramètre le code d'erreur numérique de type CodeType et renvoie le message d'erreur associé sous la forme d'un pointeur de caractères constant (const char *), également avec la garantie d'une sécurité totale vis-à-vis des exceptions et de la sécurité des threads.
Si un état d'erreur doit être converti en une exception C++, la fonction ThrowAsException() est utilisée [SWS_PER_00350]. Le déroulement suivant illustre l'interaction lors de la consultation des erreurs et du déclenchement d'exceptions :
Diagramme de séquence : déroulement typique de la vérification des erreurs, de la consultation de texte et du déclenchement d'exceptions via PerErrorDomain. Sources : [SWS_PER_00314], [SWS_PER_00315], [SWS_PER_00350].
Scénarios d'erreur
Lors de l'utilisation pratique de ara::per::PerErrorDomain, les développeurs doivent prendre en compte les différentes garanties concernant le traitement des erreurs et la sécurité vis-à-vis des exceptions. Alors que les interfaces de consultation Name()[SWS_PER_00314] et Message()[SWS_PER_00315] sont strictement déclarées comme noexcept et classées comme sûres vis-à-vis des exceptions, la fonction membre ThrowAsException() est considérée comme non sûre vis-à-vis des exceptions (not exception safe) [SWS_PER_00350]. Ce comportement est sémantiquement justifié, car le but de la fonction réside dans le déclenchement contrôlé d'une exception correspondant au code d'erreur (noexcept(false)).
Une contrainte essentielle concerne les plateformes ou les configurations de compilation sans exceptions C++ activées : si le traitement des exceptions est désactivé dans le compilateur, ThrowAsException() ne participe pas à la résolution de surcharge selon [SWS_PER_00350]. Dans de tels environnements, le logiciel d'application doit recourir à l'évaluation des codes d'erreur via les alias fournis Errc[SWS_PER_00411] et aux descriptions textuelles de Message()[SWS_PER_00315], au lieu d'intercepter des objets d'exception de type Exception[SWS_PER_00412].
Ce guide a été généré automatiquement sur la base des exigences de spécification AUTOSAR.
Throws the exception associated with the error code. As per [SWS_CORE_10304], this function does not participate in overload resolution when C++ exceptions are disabled in the compiler toolchain.
Throws the exception associated with the error code. As per [SWS_CORE_10304], this function does not participate in overload resolution when C++ exceptions are disabled in the compiler toolchain.
gemini-3.8-flash-low· 2026-10-13 · Original allemand