Encapsulation of an ErrorDomain. An ErrorDomain is the controlling entity for ErrorCode’s error code values, and defines the mapping of such error code values to textual representations. This type constitutes a base class for ErrorDomain implementations. This class is a literal type, and subclasses are strongly advised to be literal types as well.
Sert de classe de base pour la commande des codes d’erreur et associe des valeurs d’erreur spécifiques au domaine à des messages textuels.
GÉNÉRÉ PAR IAnon vérifiéModèle : gemini-3.8-flash-medium · Effort : medium · Température : non réglable · Prompt : d0712f7c0a23ProvenanceQuestions ouvertes (2)
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand
Sert de classe de base pour la commande des codes d’erreur et associe des valeurs d’erreur spécifiques au domaine à des messages textuels.
La classe ara::core::ErrorDomain sert de classe de base abstraite pour la gestion des valeurs d’erreur et associe des codes spécifiques à un domaine à leurs représentations textuelles [SWS_CORE_00153]. Les sous-classes encapsulent un numéro d’identification unique à l’échelle du système et définissent la traduction en textes d’erreur immuables ainsi que le traitement des exceptions spécifique au type. Afin de permettre l’utilisation en tant que Literal Type au moment de la compilation, la classe de base dispose d’un destructeur non virtuel et protégé [SWS_CORE_00136]. Les opérations de copie et de déplacement sont totalement interdites, de sorte que les instances agissent comme des identités immuables.
Contexte
La classe ara::core::ErrorDomain constitue la base commune pour la gestion structurée des erreurs dans l’AUTOSAR Adaptive Platform. Elle agit comme classe de base abstraite pour des domaines d’erreur concrets et prend en charge la responsabilité centrale de pilotage pour les valeurs d’erreur encapsulées dans ara::core::ErrorCode. Chaque domaine définit son propre espace de noms et établit la mise en correspondance des valeurs d’erreur spécifiques au domaine de type CodeType ([SWS_CORE_00122]) avec des représentations textuelles explicites via Message() ([SWS_CORE_00153]). En outre, la classe fournit l’alias de type IdType ([SWS_CORE_00121]) pour les identifiants de domaine uniques à l’échelle du système ainsi que SupportDataType ([SWS_CORE_00123]) pour des données supplémentaires spécifiques au constructeur.
Dans le système global, ara::core::ErrorDomain interagit avec trois partenaires essentiels :
Sous-classes : les domaines d’erreur spécifiques héritent de ara::core::ErrorDomain et implémentent les fonctions membres virtuelles pures pour les noms de domaine, les messages d’erreur et le traitement des exceptions.
ara::core::ErrorCode : représente une valeur d’erreur concrète et délègue la détermination du texte descriptif au domaine d’erreur associé.
Client / code applicatif : interroge des informations d’état via le code d’erreur ou directement auprès du domaine ([SWS_CORE_00152]), ou reçoit des exceptions C++ levées ([SWS_CORE_00154]).
L’instanciation de ara::core::ErrorDomain s’effectue de manière protégée : le constructeur possède la visibilité protected et attend un identifiant de domaine unique à l’échelle du système de type IdType ([SWS_CORE_00135]). Le constructeur étant déclaré comme constexpr et noexcept, la classe de base prend en charge la création en tant que Literal Type au moment de la compilation. Il est expressément recommandé aux sous-classes de garantir également cette propriété de Literal Type.
Toute duplication ou tout transfert d’instances de domaine est interdit :
Le constructeur de copie ([SWS_CORE_00131]) et le constructeur de déplacement ([SWS_CORE_00132]) sont déclarés comme supprimés (delete).
L’opérateur d’assignation par copie ([SWS_CORE_00133]) et l’opérateur d’assignation par déplacement ([SWS_CORE_00134]) sont également supprimés.
Le destructeur est déclaré comme protected et défini sous forme d’implémentation par défaut ([SWS_CORE_00136]). Il est délibérément maintenu trivial et non virtuel afin que la classe puisse rester un Literal Type. Bien que ara::core::ErrorDomain fournisse des interfaces virtuelles pures, aucune destruction polymorphe via des pointeurs de classe de base n’est requise ([SWS_CORE_00136]). Dans la pratique, les instances concrètes de domaine devraient être gérées comme des objets de longue durée de vie ou statiques (interprétation). Question Q-a874dd64f6320d21 (ouverte)
Concernant les relations de propriété, tous les pointeurs vers des noms ([SWS_CORE_00152]) et des textes d’erreur ([SWS_CORE_00153]) restent la propriété de la classe de domaine et ne doivent pas être libérés par les clients. Toutes les opérations de lecture et de comparaison sont sûres vis-à-vis des threads et sûres vis-à-vis des exceptions ([SWS_CORE_00135], [SWS_CORE_00151]).
Parcours d'utilisation
Deux instances de ara::core::ErrorDomain sont évaluées comme égales si et seulement si leurs identifiants de domaine déterminés via Id() ([SWS_CORE_00151]) coïncident ([SWS_CORE_00137], [SWS_CORE_00138]). Le déroulement typique lors de la résolution d’erreur et du traitement des exceptions se décompose selon les étapes suivantes :
Identification du domaine : le client ou l’objet d’erreur détermine le nom du domaine sous la forme d’une chaîne terminée par zéro via Name() ([SWS_CORE_00152]).
Résolution du message : la valeur d’erreur numérique est transmise au domaine via Message(errorCode) ([SWS_CORE_00153]). Le domaine renvoie un texte d’erreur basé sur un pointeur, terminé par zéro, qui n’est jamais nullptr.
Traitement des exceptions : si un code d’erreur doit être converti en exception, le client appelle ThrowAsException(errorCode) ([SWS_CORE_00154]). Le domaine lève alors une instance appropriée de ara::core::Exception encapsulant le code d’erreur transmis.
Lors de l’utilisation de ara::core::ErrorDomain, les scénarios d’erreur et les exigences d’interface suivants doivent être pris en compte :
Appartenance erronée au domaine : si un errorCode ne provenant pas de ce ErrorDomain spécifique est transmis à la méthode Message(), cela constitue la violation spécifiée WrongDomainOfAn-ErrorCodeViolation ([SWS_CORE_00153]). Les appelants doivent s’assurer que le code d’erreur correspond à l’instance de domaine.
Exceptions C++ désactivées : la méthode ThrowAsException() n’est pas sûre vis-à-vis des exceptions (not exception safe) et lève une exception ([SWS_CORE_00154]). Si les exceptions C++ sont désactivées dans la chaîne d’outils du compilateur, cette fonction ne doit pas participer à la résolution de surcharge ([SWS_CORE_00154]).
Exclusion des pointeurs nuls : ni Name() ni Message() ne doivent jamais renvoyer nullptr ([SWS_CORE_00152], [SWS_CORE_00153]). Une implémentation de sous-classe renvoyant nullptr enfreint la spécification d’interface.
Ce guide a été généré par un assistant de curation IA sur la base de la spécification AUTOSAR R25-11.
Compare for equality with another ara::core::ErrorDomain instance. Two ara::core::ErrorDomain instances compare equal when their identifiers (returned by Id()) are equal
GÉNÉRÉ PAR IAnon vérifiéModèle : gemini-3.8-flash-medium · Effort : medium · Température : non réglable · Prompt : 59f6b727c495Provenance
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand
La fonction membre Id() de la classe ara::core::ErrorDomain issue du fichier d'en-tête ara/core/error_domain.h renvoie de manière synchrone l'identifiant univoque du domaine d'erreur concerné ([SWS_CORE_00151]). L'appel n'attend aucun paramètre de transmission et renvoie l'identificateur de domaine sous forme de valeur du type IdType, garantissant ainsi une distinction univoque des différents domaines d'erreur dans l'ensemble du système.
Pour le traitement des erreurs, il est pertinent que la fonction soit déclarée comme noexcept et classée comme exception safe ([SWS_CORE_00151]). Elle ne lève donc jamais d'exceptions et ne signale ni codes d'erreur ni cas particuliers. Grâce à sa propriété de méthode constexpr, l'identifiant peut au besoin être évalué dès la compilation et utilisé dans des expressions constantes.
Concernant la concurrence et les conditions d'appel, Id() est spécifiée comme thread-safe ([SWS_CORE_00151]). L'appel est sans état et exempt d'effets secondaires modificateurs, de sorte qu'un nombre quelconque de threads peuvent accéder simultanément et sans mécanismes de verrouillage externes à la même instance.
Dans l’interaction au sein de l’architecture de domaine, l’identifiant constitue le critère de comparaison principal : deux instances de ara::core::ErrorDomain sont considérées comme égales selon la spécification si et seulement si leurs identifiants fournis par Id() concordent, ce qui est directement mis en œuvre par l’opérateur d’égalité operator== ([SWS_CORE_00137]).
Cette note d’utilisation a été générée par une IA et s’appuie sur AUTOSAR Adaptive R25-11.
Return a textual representation of the given errorCode.
The returned pointer remains owned by the ara::core::ErrorDomain sub-class and shall not be freed by clients.
GÉNÉRÉ PAR IAnon vérifiéModèle : gemini-3.8-flash-medium · Effort : medium · Température : non réglable · Prompt : 9827a3eb35a8ProvenanceQuestions ouvertes (1)
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand
La fonction purement virtuelle Message de la classe de base ara::core::ErrorDomain de l'en-tête ara/core/error_domain.h sert à la récupération synchrone d'une représentation textuelle pour un code d'erreur spécifique au domaine errorCode transmis [SWS_CORE_00153]. Elle renvoie un pointeur vers une chaîne de caractères terminée par un caractère nul (const char *), garanti n'être jamais nullptr. La mémoire référencée reste la propriété de la sous-classe respective de ara::core::ErrorDomain et ne doit en aucun cas être libérée par les clients appelants [SWS_CORE_00153].
En matière de concurrence et de robustesse, la méthode est déclarée comme noexcept, considérée comme sûre vis-à-vis des exceptions (exception safe) et conçue comme entièrement sûre pour les threads (thread-safe) [SWS_CORE_00153]. En ce qui concerne les états d'erreur possibles, il est spécifié qu'un errorCode qui ne provient pas de l'instance respective de ara::core::ErrorDomain entraîne une violation de type WrongDomainOfAnErrorCodeViolation[SWS_CORE_00153].
Dans le cadre de l'interaction avec le modèle de traitement des erreurs d'AUTOSAR, des domaines d'erreur concrets tels que ara::core::FutureErrorDomain[SWS_CORE_00443] et ara::core::CoreErrorDomain[SWS_CORE_05243] surchargent cette méthode afin de transformer les codes d'erreur spécifiques au domaine en textes de messages concrets. Interprétation : l'interaction avec ara::core::ErrorCode::Message()[SWS_CORE_00518], qui renvoie une représentation textuelle sous forme de StringView, repose probablement sur le fait que ErrorCode relaie la traduction à la méthode Message du domaine d'erreur associé. Question Q-f9007fdf5234b6a4 (ouverte)
Cette note d’utilisation a été générée de manière automatisée sur la base des exigences de la spécification.
This function will determine the appropriate exception type for the given ErrorCode according to [SWS_CORE_10953] and throw it. The thrown exception will contain the given ErrorCode.
GÉNÉRÉ PAR IAnon vérifiéModèle : gemini-3.8-flash-medium · Effort : medium · Température : non réglable · Prompt : f434ab45abb9Provenance
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand
La méthode purement virtuelle ThrowAsException de la classe ara::core::ErrorDomain sert à déclencher de manière synchrone un code d’erreur transmis sous forme d’exception de type ara::core::Exception[SWS_CORE_00154]. La fonction accepte comme paramètre d’entrée une référence à const ErrorCode &errorCode et ne possède aucune valeur de retour, l’exécution étant interrompue par la levée de l’exception [SWS_CORE_00154].
En ce qui concerne le comportement face aux erreurs et aux exceptions, le domaine respectif détermine le type d'exception correspondant au code d'erreur transmis conformément à [SWS_CORE_10953] et le lève [SWS_CORE_00154]. L'exception déclenchée contient le ErrorCode transmis [SWS_CORE_00154]. La fonction est classée comme non sûre vis-à-vis des exceptions (not exception safe) [SWS_CORE_00154].
Pour la concurrence et le contexte du compilateur, les exigences suivantes s'appliquent :
Sécurité des threads : L'appel de ThrowAsException est spécifié comme thread-safe (thread-safe) [SWS_CORE_00154].
Restriction en cas d'exceptions C++ désactivées : Si les exceptions C++ sont désactivées dans la chaîne d'outils du compilateur, la fonction ne doit pas participer à la résolution de surcharge conformément à [SWS_CORE_10304][SWS_CORE_00154].
En interaction avec d'autres composants, la fonction constitue la base du déclenchement d'exceptions via des objets d'erreur : ainsi, ara::core::ErrorCode::ThrowAsException délègue la levée au domaine associé via this->Domain().ThrowAsException(*this)[SWS_CORE_00519]. Des implémentations concrètes surchargent cette interface afin de lever des exceptions spécifiques telles que CoreException dans CoreErrorDomain[SWS_CORE_05244] ou FutureException dans FutureErrorDomain[SWS_CORE_00444].
Ce texte a été généré par une IA et s'appuie sur la spécification AUTOSAR Adaptive R25-11.
Any exception of the type as defined in [SWS_CORE_10953] containing the given ErrorCode
Hinweise: This function shall not participate in overload resolution when C++ exceptions are disabled in the compiler toolchain. As per [SWS_CORE_10304].
Request a governed re-review of this record. The record is not changed immediately.
This dtor is non-virtual (and trivial) so that this class can be a literal type. While this class has virtual functions, no polymorphic destruction is needed.
gemini-3.8-flash-low· 2026-10-13 · Original allemand