Dient als thread-safe uitzondering voor het signaleren en doorgeven van UDS-NRC-fouten in diagnoseklassen.
DOOR AI GEGENEREERDongecontroleerdModel: gemini-3.8-flash-medium · Inspanning: medium · Temperatuur: niet regelbaar · Prompt: 6ef167bbc303HerkomstOpen vragen (2)
vertaald uit de Duitse handleidinggemini-3.8-flash-low · 2026-10-13 · Duits origineel
Dient als thread-safe uitzondering voor het signaleren en doorgeven van UDS-NRC-fouten in diagnoseklassen.
De klasse ara::diag::DiagUdsNrcException dient als gestandaardiseerde uitzondering voor het signaleren van UDS-NRC-fouten door diagnoseklassen van het AUTOSAR Adaptive Platform (AUTOSAR_AP_SWS_Diagnostics §8.12.4 “Class: DiagUdsNrcException”). Bij het optreden van een overeenkomstige foutconditie wordt ze geïnstantieerd met een ara::core::ErrorCode, geworpen en door de aanroepende applicatie afgevangen voor foutafhandeling. Als essentiële randvoorwaarde garandeert haar constructor conform [SWS_DM_00528] volledige uitzonderingsveiligheid (noexcept) en thread-safety, waardoor een betrouwbare objectcreatie zelfs in gelijktijdige contexten gewaarborgd is.
Context
De klasse ara::diag::DiagUdsNrcException vormt in het AUTOSAR Adaptive Platform het centrale uitzonderingstype voor diagnoseklassen van module diag (AUTOSAR_AP_SWS_Diagnostics §8.12.4 “Class: DiagUdsNrcException”). Conform specificatie [SWS_DM_00527] definieert ze een gestandaardiseerde C++-uitzonderingsinterface die direct overerft van de basisuitzonderingsklasse ara::core::Exception. Haar primaire verantwoordelijkheid bestaat erin foutcondities uit de diagnosecontext, in het bijzonder negatieve responscodes (Negative Response Codes, NRC) van het UDS-protocol, als getypeerde uitzonderingen over te brengen via de programmeerinterface. De klasse communiceert daarbij nauw met ara::core::ErrorCode, die de concrete foutcode inkapselt, evenals met de aanroepende applicatielagen die diagnoseverzoeken indienen en eventuele fouten moeten afvangen ([SWS_DM_00528]). Door de declaratie in header ara/diag/diag_uds_nrc_error_domain.h is de uitzondering direct gekoppeld aan het bijbehorende UDS-NRC-foutdomein ([SWS_DM_00528]).
De levenscyclus van een instantie van ara::diag::DiagUdsNrcException begint met haar expliciete instantiëring door een diagnoseklasse of een interne foutafhandelingsroutine. Conform [SWS_DM_00528] beschikt de klasse over een constructor explicit DiagUdsNrcException(ara::core::ErrorCode err) noexcept; die de onderliggende foutcode als parameter err accepteert. Deze constructor is uitdrukkelijk gedefinieerd als uitzonderingsveilig (exception safe) en niet-werpend (noexcept) ([SWS_DM_00528]), waardoor gegarandeerd wordt dat bij het aanmaken van het object in het foutpad geen secundaire uitzonderingen kunnen optreden. Bovendien is de creatie conform [SWS_DM_00528] geclassificeerd als thread-safe (thread-safe). Na de aanmaak wordt de uitzonderingsinstantie doorgaans op waarde geworpen via het C++-runtimesysteem. Het eigendom van het object blijft tijdens de stack-unwinding bij de runtime-omgeving totdat de uitzondering wordt gebonden en geëvalueerd in een passend catch-blok. Met het verlaten van het uitzonderingsafhandelingsblok eindigt de levenscyclus van het object door reguliere vernietiging.
Gebruikspad
Het typische gebruikspad omvat de detectie van een UDS-NRC-fout, de creatie van de uitzondering en de daaropvolgende evaluatie ervan door de applicatie:
Een applicatiecomponent roept een diagnosefunctie of service-interface van een ara::diag-klasse aan.
De diagnoseklasse stelt tijdens de verwerking vast dat het verzoek niet succesvol kan worden afgehandeld en dat er sprake is van een UDS-NRC, waarna ze een bijbehorende ara::core::ErrorCode genereert.
Onder overdracht van deze foutcode wordt de uitzondering ara::diag::DiagUdsNrcException geïnstantieerd via haar constructor ([SWS_DM_00528]).
De aanroepende applicatie vangt de uitzondering hetzij type-exact als ara::diag::DiagUdsNrcException ([SWS_DM_00527]), hetzij polymorf via de basisklasse ara::core::Exception af en benadert de foutinformatie.
Omdat ara::diag::DiagUdsNrcException zelf een middel voor foutsignalering is, hebben foutscenario's vooral betrekking op robuustheid en gelijktijdigheid bij de uitzonderingscreatie:
Robuuste objectcreatie: Door de specificatie als noexcept en exception safe ([SWS_DM_00528]) is uitgesloten dat bij de constructie een secundaire uitzondering wordt geworpen. Dit voorkomt fatale runtime-crashes zoals std::terminate in kritieke foutafhandelingspaden.
Geldigheid van de foutcode: Als voorwaarde voor de instantiëring moet een geldige ara::core::ErrorCode beschikbaar zijn ([SWS_DM_00528]). Deze is doorgaans afkomstig uit het door ara/diag/diag_uds_nrc_error_domain.h gedefinieerde foutdomein.
Parallelle diagnoseverwerking: Aangezien de constructor is gespecificeerd als thread-safe ([SWS_DM_00528]), mogen meerdere threads gelijktijdig diagnose-uitzonderingen creëren zonder dat er race conditions optreden bij de initialisatie van het uitzonderingsobject.
Deze handleiding is gegenereerd door een AI-systeem op basis van de AUTOSAR-specificatie R25-11.
UML-klassendiagram
Hohle Dreieckspfeile = Vererbung (zeigt zur Basisklasse); Klicken öffnet die jeweilige Klassenseite.
gemini-3.8-flash-low· 2026-10-13 · Duits origineel