Signaleert fouten bij diagnoseoperaties synchroon als uitzondering met foutcode aan de aanroeper.
DOOR AI GEGENEREERDongecontroleerdModel: gemini-3.8-flash-medium · Inspanning: medium · Temperatuur: niet regelbaar · Prompt: a149cf644e7fHerkomstOpen vragen (2)
vertaald uit de Duitse handleidinggemini-3.8-flash-low · 2026-10-13 · Duits origineel
Signaleert fouten bij diagnoseoperaties synchroon als uitzondering met foutcode aan de aanroeper.
De uitzonderingsklasse ara::diag::DiagReportingException dient voor de synchrone signalering van fouttoestanden die optreden bij operaties binnen diagnoseklassen van het Adaptive Platform (AUTOSAR_AP_SWS_Diagnostics §8.11.8 “Class: DiagReportingException”). Ze wordt expliciet geïnstantieerd met een specifieke ara::core::ErrorCode en transporteert deze naar de aanroepende applicatie voor analyse van de foutoorzaak [SWS_DM_00988]. Als centrale randvoorwaarde is de bijbehorende constructor gespecificeerd als noexcept, exception safe en thread-safe, wat een foutloze creatie garandeert, zelfs in gelijktijdige uitvoeringscontexten. Onbehandelde instanties moeten worden vermeden, aangezien ze leiden tot onmiddellijke beëindiging van het programma.
Context
De klasse ara::diag::DiagReportingException vormt de centrale uitzonderingsklasse voor meldings- en rapportageprocessen binnen het functionele cluster Diagnostics (AUTOSAR_AP_SWS_Diagnostics §8.11.8 “Class: DiagReportingException”). Ze is gedefinieerd als een publieke specialisatie van ara::core::Exception en representeert specifieke fouttoestanden die optreden tijdens de interactie met diagnoseklassen [SWS_DM_00987]. In een AUTOSAR Adaptive-applicatie fungeert de uitzondering als schakel tussen de interne diagnoseservices en de aanroepende applicatiesoftware: treedt tijdens een diagnostische melding een fout op, dan kapselt DiagReportingException deze toestand in en transporteert deze synchroon via de call-stack naar de aanroeper. Tot de primaire interactiepartners behoren de diagnosegerelateerde API-klassen van de module diag, die de uitzondering in geval van een fout instantiëren en opwerpen, evenals bovenliggende foutafhandelingsroutines van de applicatie die de diagnosefout afvangen en verwerken.
Levenscyclus
De instantiëring van ara::diag::DiagReportingException vindt expliciet plaats door het doorgeven van een foutcode van het type ara::core::ErrorCode aan de constructor [SWS_DM_00988]. De declaratie van de constructor als explicit voorkomt impliciete conversies van foutcodes naar uitzonderingsobjecten en waarborgt dat uitzonderingsinstanties altijd bewust worden gecreëerd [SWS_DM_00988].
Aangezien de constructor is voorzien van de specificatie noexcept, wordt gegarandeerd dat bij de objectcreatie zelf geen verdere uitzonderingen kunnen optreden [SWS_DM_00988]. Dit is essentieel voor foutpaden om een opeenvolging van uitzonderingen tijdens de foutafhandeling te voorkomen. Bovendien is het constructieproces expliciet geclassificeerd als uitzonderingsveilig (exception safe) en thread-safe [SWS_DM_00988]. Meerdere threads kunnen zodoende parallel en zonder onderlinge blokkades afzonderlijke uitzonderingsobjecten aanmaken.
De levenscyclus van de uitzondering is gekoppeld aan de C++-stack-unwinding: na creatie op de call-stack wordt het object via het throw-mechanisme doorgegeven aan het verantwoordelijke catch-blok. Bij het verlaten van de uitzonderingshandler eindigt de levensduur van het object en worden de gebruikte resources automatisch vrijgegeven.
Gebruikspad
Het reguliere gebruikspad vangt aan zodra een diagnostische melding of operatie binnen het Adaptive-platform mislukt. In het typische verloop herkent de uitvoerende diagnoseklasse een ontoelaatbare conditie en genereert de passende ara::core::ErrorCode. In plaats van de fout louter als retourwaarde door te geven, wordt in het synchrone uitzonderingspad een object van het type ara::diag::DiagReportingException geconstrueerd en geworpen [SWS_DM_00987].
Aan de ontvangende zijde vangt de applicatielogica de uitzondering af. Dit gebeurt bij voorkeur via referentie naar constante objecten (const ara::diag::DiagReportingException& of polymorf via const ara::core::Exception&). Vervolgens extraheert de handler de ingebedde ara::core::ErrorCode om de exacte foutoorzaak te bepalen en passende herstelmaatregelen te initiëren.
Foutscenario's
Foutscenario's in verband met ara::diag::DiagReportingException betreffen vooral de interpretatie van de doorgegeven foutgegevens en het uitblijven van een correcte foutafhandeling.
De constructor vereist dwingend een geldige ara::core::ErrorCode[SWS_DM_00988]. Door het opnemen van het headerbestand ara/diag/diag_error_domain.h[SWS_DM_00988] is de doorgegeven foutcode vermoedelijk primair afkomstig uit het specifieke diagnosefoutdomein. Vraag Q-cb8a197542857807 (open) Een primair foutscenario in de applicatiearchitectuur ligt in het onvolledig afvangen van de uitzondering: wordt een geworpen DiagReportingException langs de call-stack niet afgehandeld door een passend catch-blok, dan leidt dit onvermijdelijk tot het aanroepen van std::terminate en daarmee tot de crash van het desbetreffende platformproces. Aangezien de constructor zelf als noexcept is gedeclareerd [SWS_DM_00988], kan de instantiëring van de uitzondering niet mislukken door een intern gebrek aan resources. Ontwikkelaars moeten er daarom voor zorgen dat aanroepende componenten voorbereid zijn op het optreden van DiagReportingException, in het bijzonder wanneer API's worden gebruikt die fouten via uitzonderingen in plaats van ara::core::Result signaleren.
Deze handleiding is gegenereerd door een AI op basis van de specificatie AUTOSAR Adaptive 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