DEENESPTFRRUARHIKOZHNL

classe ara::diag::DiagUdsNrcException

[SWS_DM_00527] Upstream: RS_AP_00119

class DiagUdsNrcException :              public ara::core::Exception {...};

Exception type thrown by Diag classes.

Header-Datei#include "ara/diag/diag_uds_nrc_error_domain.h"
Forwarding-Header#include "ara/diag/diag_fwd.h"
Scopenamespace ara::diag
Basisklasse(n)ara::core::Exception

Guide utilisateurGÉNÉRÉ PAR IA

Sert d'exception sûre vis-à-vis des threads pour la signalisation et la transmission d'erreurs NRC UDS dans les classes de diagnostic.
GÉNÉRÉ PAR IA non vérifié Modèle : gemini-3.8-flash-medium · Effort : medium · Température : non réglable · Prompt : 6ef167bbc303 Provenance Questions ouvertes (2)
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand

Sert d'exception sûre vis-à-vis des threads pour la signalisation et la transmission d'erreurs NRC UDS dans les classes de diagnostic.

La classe ara::diag::DiagUdsNrcException sert d'exception standardisée pour la signalisation d'erreurs NRC UDS par les classes de diagnostic de l'AUTOSAR Adaptive Platform (AUTOSAR_AP_SWS_Diagnostics §8.12.4 « Class: DiagUdsNrcException »). Lors de la survenance d'une condition d'erreur correspondante, elle est instanciée avec un ara::core::ErrorCode, levée et interceptée par l'application appelante pour le traitement d'erreur. Comme contrainte essentielle, son constructeur garantit selon [SWS_DM_00528] une sécurité complète vis-à-vis des exceptions (noexcept) ainsi que la sécurité vis-à-vis des threads, garantissant ainsi une création d'objet fiable même dans des contextes concurrents.

Contexte

Dans l'AUTOSAR Adaptive Platform, la classe ara::diag::DiagUdsNrcException constitue le type d'exception central pour les classes de diagnostic du module diag (AUTOSAR_AP_SWS_Diagnostics §8.12.4 « Class: DiagUdsNrcException »). Conformément à la spécification [SWS_DM_00527], elle définit une interface d'exception C++ standardisée qui hérite directement de la classe d'exception de base ara::core::Exception. Sa responsabilité première consiste à transporter les conditions d'erreur issues du contexte de diagnostic, en particulier les codes de réponse négatifs (Negative Response Codes, NRC) du protocole UDS, sous forme d'exceptions typées via l'interface de programmation d'application. La classe interagit étroitement avec ara::core::ErrorCode, qui encapsule le code d'erreur concret, ainsi qu'avec les couches d'application appelantes qui effectuent des requêtes de diagnostic et doivent intercepter les erreurs éventuelles ([SWS_DM_00528]). De par sa déclaration dans l'en-tête ara/diag/diag_uds_nrc_error_domain.h, l'exception est directement liée au domaine d'erreur NRC UDS correspondant ([SWS_DM_00528]).
diag_uds_nrc_context diag_classes Classes ara::diag nrc_exception ara::diag::DiagUdsNrcException diag_classes->nrc_exception génère et lève app Anwendungssoftware nrc_exception->app transmet l’erreur à error_code ara::core::ErrorCode error_code->nrc_exception initialisiert

Diagramme de contexte : Intégration de DiagUdsNrcException dans l'interaction entre code d'erreur, classes de diagnostic et logiciel d'application. Sources : [SWS_DM_00527], [SWS_DM_00528], AUTOSAR_AP_SWS_Diagnostics §8.12.4 « Class: DiagUdsNrcException »

Cycle de vie

Le cycle de vie d'une instance de ara::diag::DiagUdsNrcException commence par son instanciation explicite par une classe de diagnostic ou une routine interne de traitement d'erreurs. Selon [SWS_DM_00528], la classe dispose d'un constructeur explicit DiagUdsNrcException(ara::core::ErrorCode err) noexcept; qui reçoit le code d'erreur sous-jacent en tant que paramètre err. Ce constructeur est expressément défini comme sûr vis-à-vis des exceptions (exception safe) et ne levant pas d'exceptions (noexcept) ([SWS_DM_00528]), ce qui garantit qu'aucune exception secondaire ne peut survenir lors de la création de l'objet dans le chemin d'erreur. De plus, la création est classée comme thread-safe (thread-safe) selon [SWS_DM_00528]. Après sa création, l'instance d'exception est typiquement levée par valeur via le système d'exécution C++. La propriété de l'objet reste auprès de l'environnement d'exécution pendant le déroulement de la pile, jusqu'à ce que l'exception soit liée et évaluée dans un bloc catch correspondant. La sortie du bloc de traitement d'exception met fin au cycle de vie de l'objet par destruction régulière.

Parcours d'utilisation

Le chemin d'utilisation typique comprend la détection d'une erreur NRC UDS, la création de l'exception et son évaluation consécutive par l'application :
  1. Une application composant appelle une fonction de diagnostic ou une interface de service d'une classe ara::diag.
  2. La classe de diagnostic constate lors du traitement que la requête ne peut pas être servie avec succès et qu'un NRC UDS est présent, à la suite de quoi elle génère un ara::core::ErrorCode correspondant.
  3. L'exception ara::diag::DiagUdsNrcException est instanciée via son constructeur en lui transmettant ce code d'erreur ([SWS_DM_00528]).
  4. La classe de diagnostic lève l'objet d'exception hors du contexte d'exécution (AUTOSAR_AP_SWS_Diagnostics §8.12.4 « Class: DiagUdsNrcException »).
  5. L'application appelante intercepte l'exception soit de manière typée exacte sous forme de ara::diag::DiagUdsNrcException ([SWS_DM_00527]), soit de manière polymorphe via la classe de base ara::core::Exception, et accède aux informations d'erreur.
Déroulement du traitement des exceptions avec DiagUdsNrcExceptionApplicationDiag-KlasseDiagUdsNrcExceptionExécuter la fonction de diagnosticUDS-NRC-Bedingung erkannt, ErrorCode erzeugtDiagUdsNrcException(err)throw DiagUdsNrcExceptioncatch et évaluer l’erreur

Diagramme de séquence : Séquence typique de création, de levée et de capture de DiagUdsNrcException. Sources : [SWS_DM_00527], [SWS_DM_00528], AUTOSAR_AP_SWS_Diagnostics §8.12.4 « Class: DiagUdsNrcException »

Scénarios d'erreur

Comme ara::diag::DiagUdsNrcException est elle-même un vecteur de signalisation d'erreurs, les scénarios d'erreur concernent avant tout la robustesse et la concurrence lors de la création de l'exception :
  • Création robuste d'objets : Grâce à la spécification en tant que noexcept et exception safe ([SWS_DM_00528]), il est exclu qu'une exception secondaire soit levée lors de la construction. Cela empêche les arrêts d'exécution fatals tels que std::terminate dans les chemins critiques de traitement d'erreurs.
  • Validité du code d'erreur : Un ara::core::ErrorCode valide doit être disponible comme précondition pour l'instanciation ([SWS_DM_00528]). Celui-ci est typiquement issu du domaine d'erreur défini par ara/diag/diag_uds_nrc_error_domain.h.
  • Traitement de diagnostic parallèle : Le constructeur étant spécifié comme thread-safe ([SWS_DM_00528]), plusieurs threads peuvent créer des exceptions de diagnostic de manière concurrente sans qu'il ne se produise de situations de compétition (race conditions) lors de l'initialisation de l'objet d'exception.

Ce guide a été généré par un système d'IA sur la base de la spécification AUTOSAR R25-11.

Diagramme de classes UML

Hohle Dreieckspfeile = Vererbung (zeigt zur Basisklasse); Klicken öffnet die jeweilige Klassenseite.

G nara__diag__DiagUdsNrcException343 DiagUdsNrcException + DiagUdsNrcException() nara__core__Exception792 Exception nara__diag__DiagUdsNrcException343->nara__core__Exception792 nstd__exception10 std::exception nara__core__Exception792->nstd__exception10

Constructeurs et destructeur

Construct a new DiagException from an ErrorCode.

explicit DiagUdsNrcException (ara::core::ErrorCode err) noexcept;

Documentation des méthodes

fonction DiagUdsNrcException [SWS_DM_00528] Upstream: RS_AP_00119

explicit DiagUdsNrcException (ara::core::ErrorCode err) noexcept;

Construct a new DiagException from an ErrorCode.

Header-Datei#include "ara/diag/diag_uds_nrc_error_domain.h"
Scopeclass ara::diag::DiagUdsNrcException
Exception-Sicherheitexception safe
Thread-Sicherheitthread-safe

Parameter (in)

ParameterBeschreibung
errthe ErrorCode

Request a governed re-review of this record. The record is not changed immediately.

Record
AUTOSAR/AP/record/SWS_DM_00528
Status
valid/unmigrated
Version
AUTOSAR/AP/record/SWS_DM_00528@rel:R25-11#55d151d4
Content hash
55d151d4
Source
https://www.autosar.org/fileadmin/standards/R25-11/AP/AUTOSAR_AP_SWS_Diagnostics.pdf#nameddest=SWS_DM_00528
Status: valid/unmigrated Version: rel:R25-11#55ae2ae1 Versionshistorie & Revisions (1 transition, 7 revision)
Current State
valid/unmigrated
Reason
mechanically backfilled by migriere_status_backfill.py -- no per-field curation history exists yet for this record
Campaign
2026-08-13-status-backfill
Active Version
AUTOSAR/AP/record/SWS_DM_00528@rel:R25-11#55ae2ae1
Point-in-Time History:
Recorded Revisions (7):
  • R25-11rel:R25-11#d0877d832026-09-30
  • R20-11rel:R20-11#cfe41a2e2026-10-14
  • R21-11rel:R21-11#cfe41a2e2026-10-14
  • R22-11rel:R22-11#b5842e552026-10-14
  • R23-11rel:R23-11#ccbb9a702026-10-14
  • R24-11rel:R24-11#55ae2ae12026-10-14
  • R25-11rel:R25-11#55ae2ae12026-10-14 active
DateActorTransitionReason / RationaleCampaign
2026-08-13toolnone → valid/unmigratedmechanically backfilled by migriere_status_backfill.py -- no per-field curation history exists yet for this record2026-08-13-status-backfill