Sert de classe de base pour toutes les exceptions AUTOSAR et encapsule un code d'erreur thread-safe pour évaluation.
GÉNÉRÉ PAR IAnon vérifiéModèle : gemini-3.8-flash-medium · Effort : medium · Température : non réglable · Prompt : d4eaa8466f70ProvenanceQuestions ouvertes (1)
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand
Sert de classe de base pour toutes les exceptions AUTOSAR et encapsule un code d'erreur thread-safe pour évaluation.
La classe ara::core::Exception sert de classe de base commune pour tous les types d'exceptions de l'Adaptive Platform et intègre un ErrorCode dans la hiérarchie d'exceptions C++ standardisée [SWS_CORE_00611]. Lors de la survenue d'erreurs, elle achemine ce code d'erreur de manière thread-safe vers un gestionnaire, qui peut l'évaluer via Error() ou via la méthode standard dérivée what()[SWS_CORE_00613]. Toutes les opérations sont strictement sûres vis-à-vis des exceptions et déclarées comme noexcept. Pour exclure tout découpage d'objet (object slicing) accidentel sur les types dérivés, les opérations de copie sont exécutées de manière protégée.
Contexte
La classe ara::core::Exception sert de classe de base commune pour tous les types d'exceptions au sein de l'AUTOSAR Adaptive Platform. Elle jette un pont entre la gestion des exceptions de la bibliothèque standard C++ et le modèle d'erreurs d'AUTOSAR : d'une part, elle hérite publiquement de std::exception et substitue sa fonction membre virtuelle what()[SWS_CORE_00612], d'autre part, elle achemine un objet d'erreur intégré du type ara::core::ErrorCode[SWS_CORE_00611], [SWS_CORE_00613].
La responsabilité principale de ara::core::Exception consiste à mettre à disposition des informations d'erreur structurées au-delà des limites d'appel en cas d'exception. Interprétation : la classe devrait être conçue comme une racine commune pour les classes d'exceptions spécifiques aux domaines de la plateforme ; ses opérations de copie sont spécifiées comme protected afin d'éviter tout découpage d'objet (object slicing) involontaire pour les instances dérivées [SWS_CORE_00614], [SWS_CORE_00618]. Question Q-20ffec7888b9e724 (ouverte)
La création d'une ara::core::Exception requiert impérativement la spécification explicite d'un code d'erreur lors de l'appel du constructeur [SWS_CORE_00611]. Ce constructeur est défini comme noexcept et ne lève donc lui-même aucune exception.
Les relations de propriété et les possibilités de copie respectent des règles de protection strictes : le constructeur de copie [SWS_CORE_00618] ainsi que l'opérateur d'assignation par copie [SWS_CORE_00614] possèdent tous deux le modificateur d'accès protected. Cela empêche que des sous-classes polymorphes ne soient copiées de manière incomplète via les interfaces de la classe de base. En revanche, pour le transfert de ressources, le constructeur de déplacement [SWS_CORE_00615] et l'opérateur d'assignation par déplacement avec qualificateur de référence &[SWS_CORE_00616] sont mis à disposition publiquement sous forme de noexcept=default.
La destruction s'effectue de manière déterministe via le destructeur virtuel [SWS_CORE_00617], qui est spécifié comme noexcept override=default et garantit le nettoyage correct des instances dérivées. Les accès concurrents en lecture aux méthodes ainsi que l'instanciation sont documentés comme thread-safe [SWS_CORE_00611], [SWS_CORE_00612], [SWS_CORE_00613].
Parcours d'utilisation
Le déroulement nominal s'étend de la détection de l'erreur jusqu'au diagnostic structuré dans le gestionnaire d'exceptions, en passant par le déclenchement de l'exception :
Création et déclenchement : un composant constate une situation d'erreur, instancie l'exception avec le ErrorCode[SWS_CORE_00611] approprié et lève l'objet via throw.
Interception : un bloc de niveau supérieur intercepte l'objet par référence (par exemple sous la forme d'un const ara::core::Exception& ou de manière polymorphe sous la forme d'un const std::exception&).
Sortie de texte standardisée :what() permet d'obtenir une explication textuelle sous la forme d'une chaîne de caractères terminée par zéro [SWS_CORE_00612]. Toutes les garanties de durée de vie de std::exception::what restent alors intégralement préservées.
Vérification détaillée des erreurs : via la fonction membre Error(), le gestionnaire accède à une référence constante du ErrorCode intégré [SWS_CORE_00613] afin d'évaluer automatiquement les domaines d'erreur et les codes spécifiques au système.
Comme ara::core::Exception constitue elle-même l'objet porteur des états d'erreur, l'ensemble des opérations est conçu pour une résilience maximale :
Sécurité vis-à-vis des exceptions : toutes les fonctions membres – y compris les constructeurs, les opérateurs d'assignation, le destructeur et les méthodes d'inspection – sont explicitement déclarées comme noexcept et spécifiées comme sûres vis-à-vis des exceptions (exception safe) [SWS_CORE_00611], [SWS_CORE_00612], [SWS_CORE_00613], [SWS_CORE_00614], [SWS_CORE_00615], [SWS_CORE_00616], [SWS_CORE_00617], [SWS_CORE_00618]. Cela empêche des exceptions en cascade fatales pendant le traitement de l'exception.
Conditions de durée de vie : la référence fournie par Error() se lie à l'objet exception [SWS_CORE_00613] ; elle ne doit pas être utilisée au-delà de la durée de vie de la Exception. Pour la valeur de retour de what(), les règles de durée de vie de la bibliothèque standard s'appliquent [SWS_CORE_00612].
Prévention des états d'objet non valides : l'encapsulation des opérations de copie dans la zone protected empêche que des sous-classes polymorphes ne deviennent accidentellement incohérentes par découpage d'objet (slicing) [SWS_CORE_00614], [SWS_CORE_00618].
Ce guide est basé sur la spécification AUTOSAR Adaptive Platform Release R25-11.
Return the explanatory string. This function overrides the virtual function std::exception:: what. All guarantees about the lifetime of the returned pointer that are given for std::exception::what are preserved. ≙ std::exception::
Return the explanatory string. This function overrides the virtual function std::exception:: what. All guarantees about the lifetime of the returned pointer that are given for std::exception::what are preserved.
GÉNÉRÉ PAR IAnon vérifiéModèle : gemini-3.8-flash-medium · Effort : medium · Température : non réglable · Prompt : 1b4e9bb17f9aProvenance
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand
La fonction membre what de la classe ara::core::Exception sert à obtenir de manière synchrone une chaîne de caractères explicative relative à l’erreur survenue [SWS_CORE_00612]. Elle surcharge la fonction virtuelle std::exception::what et renvoie un pointeur vers une chaîne de caractères terminée par zéro (const char*) [SWS_CORE_00612].
Utilisation et durée de vie
La fonction n’attend aucun paramètre d’entrée. Concernant la validité du pointeur renvoyé, toutes les garanties applicables à std::exception::what sont conservées [SWS_CORE_00612]. Pour pouvoir utiliser la fonction, le fichier d’en-tête ara/core/exception.h doit être inclus [SWS_CORE_00612].
Gestion des erreurs et concurrence
Sécurité vis-à-vis des exceptions : L’opération est déclarée comme noexcept et spécifiée comme sûre vis-à-vis des exceptions (exception safe) ; elle ne lève elle-même aucune exception [SWS_CORE_00612].
Concurrence : L’exécution est spécifiée comme sûre vis-à-vis des threads (thread-safe) [SWS_CORE_00612]. Les appels peuvent ainsi être effectués en toute sécurité depuis des threads parallèles.
Cette note d’utilisation a été générée automatiquement.
gemini-3.8-flash-low· 2026-10-13 · Original allemand