Gère les codes d'erreur du cluster ara::core, les traduit en messages d'erreur et lève les exceptions associées.
GÉNÉRÉ PAR IAnon vérifiéModèle : gemini-3.8-flash-medium · Effort : medium · Température : non réglable · Prompt : 8500dff6850eProvenanceQuestions ouvertes (1)
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand
Gère les codes d'erreur du cluster ara::core, les traduit en messages d'erreur et lève les exceptions associées.
La classe ara::core::CoreErrorDomain représente le domaine d'erreur pour les erreurs issues du cluster fonctionnel ara::core et associe des messages textuels descriptifs aux codes d'erreur numériques [SWS_CORE_05243]. De plus, elle permet, via ThrowAsException(), la conversion de codes d'erreur en exceptions CoreException spécifiques à un type [SWS_CORE_05244]. Comme toutes les méthodes d'interrogation sont thread-safe et constructibles avec constexpr, le domaine est adapté à une utilisation efficace à l'échelle du cluster. Si les exceptions C++ sont désactivées dans la chaîne d'outils, la méthode d'exception ne participe pas à la résolution de surcharge.
Contexte
La classe ara::core::CoreErrorDomain représente le domaine d'erreur spécifique pour tous les états d'erreur qui trouvent leur origine dans le cluster fonctionnel ara::core. Elle est définie comme une spécialisation finale de ErrorDomain et empêche ainsi toute dérivation ultérieure. La classe fournit, via la méthode Name(), le nom court unique du domaine [SWS_CORE_05242]. Pour une intégration cohérente dans le modèle de gestion des erreurs AUTOSAR, CoreErrorDomain définit des alias de type centraux : Errc renvoie directement, en tant qu'alias, à l'énumération CoreErrc[SWS_CORE_05231], tandis que Exception constitue l'alias de la classe d'exception de base associée CoreException[SWS_CORE_05232]. Parmi les partenaires d'interaction les plus importants figurent les capsules d'erreur génériques de type ErrorCode, qui détiennent une référence vers le domaine d'erreur respectif, ainsi que les composants exécutants qui diagnostiquent ou traitent les états d'erreur.
Cycle de vie
La création d'un CoreErrorDomain s'effectue via le constructeur par défaut sans paramètre constexpr CoreErrorDomain() noexcept[SWS_CORE_05241]. Le constructeur étant déclaré constexpr et noexcept, l'instance peut être créée dès la compilation, sans coût d'allocation ni risque d'exception.
Interprétation : étant donné que les domaines d'erreur dans la norme AUTOSAR Adaptive sont conçus sans état et fournissent exclusivement des métadonnées constantes ainsi qu'une logique de transformation, il devrait typiquement exister dans le système une instance singleton globale ou statique à laquelle l'accès se fait à l'échelle du cluster. Question Q-7b4761bf124c5755 (ouverte) L'instance reste valide pendant toute la durée d'exécution du processus. En ce qui concerne la concurrence, les opérations de la classe sont spécifiées comme étant thread-safe [SWS_CORE_05241], [SWS_CORE_05242], [SWS_CORE_05243], ce qui autorise des interrogations simultanées depuis plusieurs threads parallèles sans mesures de synchronisation supplémentaires.
Parcours d'utilisation
En fonctionnement normal, CoreErrorDomain est principalement consultée dans deux scénarios typiques par le système d'exécution ou le code applicatif : pour l'inspection textuelle des erreurs et pour la gestion des exceptions.
Lorsqu'une erreur survient, le message textuel associé peut être interrogé via la fonction membre Message() en lui transmettant le code d'erreur numérique [SWS_CORE_05243]. La spécification garantit formellement que cette fonction ne renvoie jamais de pointeur nul (nullptr), de sorte que le const char* renvoyé peut être utilisé sans risque pour les sorties de diagnostic ou la journalisation. Si une erreur ne doit pas être traitée sous forme de valeur de retour, mais propagée sous la forme d'une exception C++, la méthode ThrowAsException()[SWS_CORE_05244] est utilisée à cet effet. Celle-ci reçoit une instance de ErrorCode, instancie l'exception CoreException correspondante et la lève dans la pile d'appels courante.
Diagramme de séquence : déroulement typique de la traduction des codes d'erreur et du déclenchement conditionnel d'exceptions. Sources : [SWS_CORE_05243], [SWS_CORE_05244]
Scénarios d'erreur
Les fonctions Name() et Message() ainsi que le constructeur sont déclarés noexcept et classés comme sûrs vis-à-vis des exceptions [SWS_CORE_05241], [SWS_CORE_05242], [SWS_CORE_05243]. Ils ne lèvent aucune exception, même en situation d'erreur, et ne génèrent aucun code d'erreur propre.
En revanche, ThrowAsException() est explicitement assortie de noexcept(false) et qualifiée de non sûre vis-à-vis des exceptions, car la levée déterministe d'une exception (de type CoreException) représente la tâche principale de cette interface [SWS_CORE_05244]. Une précondition architecturale centrale s'applique : si les exceptions C++ sont désactivées dans la chaîne d'outils utilisée ou dans les paramètres du compilateur, cette fonction ne doit pas participer à la résolution de surcharge [SWS_CORE_05244]. Cela évite les erreurs de compilation dans les environnements système qui suivent l'approche embarquée tolérante aux pannes sans gestion des exceptions C++.
Ce guide a été généré par un système d'IA sur la base de la spécification R25-11.
Throw the exception type corresponding to 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 : c5a4846a6615Provenance
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand
La fonction membre ThrowAsException de la classe ara::core::CoreErrorDomain (définie dans l'en-tête ara/core/core_error_domain.h) sert au déclenchement synchrone d'une exception C++ sur la base d'un code d'erreur transmis [SWS_CORE_05244]. Comme paramètre, la fonction reçoit une référence vers une instance constante de ErrorCode (const ErrorCode &errorCode) [SWS_CORE_05244]. La méthode ne possède pas de valeur de retour, mais lève immédiatement une exception de type CoreException, qui encapsule entièrement l'objet ErrorCode transmis [SWS_CORE_05244].
Concernant le contexte d'exécution, la concurrence et les conditions relatives au compilateur, les exigences suivantes s'appliquent :
Sécurité des threads : la fonction est spécifiée comme étant thread-safe (thread-safe) et peut ainsi être appelée en toute sécurité depuis des contextes concurrents [SWS_CORE_05244].
Sécurité vis-à-vis des exceptions : le comportement est formellement classifié comme non sûr vis-à-vis des exceptions (not exception safe), car la fonction est déclarée avec noexcept(false) et lève délibérément une exception [SWS_CORE_05244].
Restriction du compilateur : lorsque les exceptions C++ sont désactivées dans la chaîne d'outils du compilateur, la méthode ne doit pas participer à la résolution de surcharge conformément à [SWS_CORE_10304][SWS_CORE_05244].
Dans la structure architecturale, la méthode substitue (override) la fonction de base purement virtuelle ThrowAsException de la classe abstraite ara::core::ErrorDomain[SWS_CORE_00154]. Dans l'application typique, la fonction n'est pas appelée directement sur l'objet de domaine, mais déclenchée via la méthode d'assistance ErrorCode::ThrowAsException(), qui relaie dynamiquement l'appel via this->Domain().ThrowAsException(*this) vers le domaine d'erreur compétent [SWS_CORE_00519].
Cette note d'utilisation a été générée par une IA sur la base de la spécification AUTOSAR Adaptive R25-11.
CoreException an exception 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.
gemini-3.8-flash-low· 2026-10-13 · Original allemand