Kapselt foutcodes van State Management in voor het doorgeven en behandelen van kritieke functionele fouten als C++-uitzondering.
DOOR AI GEGENEREERDongecontroleerdModel: gemini-3.8-flash-medium · Inspanning: medium · Temperatuur: niet regelbaar · Prompt: 72647117def3HerkomstOpen vragen (1)
vertaald uit de Duitse handleidinggemini-3.8-flash-low · 2026-10-13 · Duits origineel
Kapselt foutcodes van State Management in voor het doorgeven en behandelen van kritieke functionele fouten als C++-uitzondering.
De klasse ara::sm::SmException dient voor het doorgeven van uitzonderingssituaties die optreden bij bewerkingen van State Management [SWS_SM_81242]. Zij is afgeleid van ara::core::Exception en kapselt een specifieke ara::core::ErrorCode in voor de exacte identificatie van de opgetreden foutoorzaak. De aanmaak ervan vindt plaats via een expliciete constructor die als thread-safe en uitzonderingsveilig is gespecificeerd [SWS_SM_81243]. Aanroepende applicaties vangen het object gestructureerd op om de daarin opgenomen foutcode te analyseren en passende herstelmaatregelen in gang te zetten.
Context
De klasse ara::sm::SmException fungeert als centrale uitzondering voor het functionele cluster State Management in het AUTOSAR Adaptive Platform [SWS_SM_81242]. Zij is gedefinieerd in de header ara/sm/sm_error_domain.h en leidt publiek af van de fundamentele platform-uitzonderingsklasse ara::core::ExceptionAUTOSAR_AP_SWS_StateManagement §8.1.4 “Class: SmException”. Binnen het document wordt de specificatie van de klasse aangeduid met de status DRAFT [SWS_SM_81242].
In de architecturale context verbindt de klasse drie centrale rollen: State Management als initiërende instantie bij falende toestandshandelingen, de aanroepende Adaptive-applicatie als behandelaar en de basisinfrastructuur van ara::core, die de gemeenschappelijke interface voor foutafhandeling levert. Als drager van fouttoestanden dient zij ertoe om foutsituaties uit de module sm synchroon via het C++-uitzonderingsmechanisme door te geven aan bovenliggende controle-instanties.
Levenscyclus
De instantiëring van ara::sm::SmException vindt expliciet plaats via de constructor SmException(ara::core::ErrorCode errorCode)[SWS_SM_81243]. Deze constructor is gedeclareerd als noexcept en beschikt over zowel de eigenschap van uitzonderingsveiligheid (exception safe) als thread-veiligheid (thread-safe) AUTOSAR_AP_SWS_StateManagement §8.1.4.1.1.1 “SmException”. Daardoor is gegarandeerd dat het aanmaken van het uitzonderingsobject zelf niet faalt of verdere uitzonderingen opwerpt, zelfs wanneer het in gelijktijdige uitvoeringscontexten wordt aangemaakt.
Na de aanmaak wordt de instantie gewoonlijk op waarde (by value) geworpen en in de aanroepende context opgevangen als referentie naar constante objecten (const ara::sm::SmException& of polymorf als const ara::core::Exception&). Aangezien de specificatie geen specifieke destructors of handmatige opschoonroutines voorschrijft, volgt de vernietiging van het uitzonderingsobject volgens de interpretatie volledig de C++-standaardsemantiek en de mechanismen van de basisklasse ara::core::Exception, zodra het verantwoordelijke afhandelingsblok wordt verlaten. Vraag Q-85b1fd2f6082db8e (open)
Gebruikspad
Het typische verloop begint bij een applicatie- of platformcomponent die een toestandsbesturingsverzoek richt aan State Management. Kan de verzochte toestandsverandering intern niet worden voltrokken of is er sprake van een ernstige uitzonderingsfout, dan instantieert State Management een exemplaar van ara::sm::SmException onder vermelding van de corresponderende ara::core::ErrorCode[SWS_SM_81243].
Sequentiediagram: Typische signalering en afhandeling van een fout met behulp van SmException in State Management. Bronnen: [SWS_SM_81242], [SWS_SM_81243].
De aanroepende component vangt de opgeworpen uitzondering op in een passend catch-blok. Via de van de basisklasse ara::core::Exception overgeërfde methoden kan de applicatie de ingekapselde ara::core::ErrorCode inspecteren om de foutoorzaak semantisch toe te wijzen en gerichte maatregelen voor foutoplossing of herstel van de systeemtoestand in te leiden.
Foutscenario's
De klasse ara::sm::SmException vormt zelf geen foutgevoelig bewerkingselement, maar is het primaire dragerobject voor uitzonderingssituaties binnen State Management [SWS_SM_81242]. Een wezenlijke voorwaarde voor de aanmaak is de beschikbaarstelling van een geïnitialiseerd ara::core::ErrorCode-object bij de constructoraanroep [SWS_SM_81243].
Wordt een opgeworpen ara::sm::SmException in de callstack door geen enkele passende handler opgevangen, dan leidt dit volgens de C++-standaardregels tot de aanroep van std::terminate en daarmee tot de ongecontroleerde beëindiging van het getroffen proces. In implementaties die het afzien van uitzonderingen ten gunste van ara::core::Result voorschrijven, wordt het werpen vermeden; staat het uitzonderingspad echter ter beschikking, dan zorgt de inkapseling ervoor dat de oorspronkelijke foutcode ongewijzigd voor foutdiagnose wordt getransporteerd.
Deze klassehandleiding is gebaseerd op de specificatie AUTOSAR Adaptive R25-11. Alle gegevens steunen op de gerefereerde specificatiepunten.
UML-klassendiagram
Hohle Dreieckspfeile = Vererbung (zeigt zur Basisklasse); Klicken öffnet die jeweilige Klassenseite.
gemini-3.8-flash-low· 2026-10-13 · Duits origineel