Kapselt Fehlercodes des State Managements zur Weitergabe und Behandlung kritischer Funktionsfehler als C++-Ausnahme.
KI-GENERIERTungeprüftModell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: 72647117def3HerkunftOffene Fragen (1)
KI-generiertgemini-3.8-flash-medium · 2026-10-13
Kapselt Fehlercodes des State Managements zur Weitergabe und Behandlung kritischer Funktionsfehler als C++-Ausnahme.
Die Klasse ara::sm::SmException dient der Weitergabe von Ausnahmesituationen, die bei Operationen des State Managements auftreten [SWS_SM_81242]. Sie leitet sich von ara::core::Exception ab und kapselt einen spezifischen ara::core::ErrorCode zur exakten Identifikation der aufgetretenen Fehlerursache. Ihre Erzeugung erfolgt über einen expliziten Konstruktor, der als threadsicher und ausnahmesicher spezifiziert ist [SWS_SM_81243]. Aufrufende Anwendungen fangen das Objekt strukturiert ab, um den enthaltenen Fehlercode zu analysieren und entsprechende Wiederherstellungsmaßnahmen anzustoßen.
Kontext
Die Klasse ara::sm::SmException fungiert als zentrale Ausnahme für das Funktionscluster State Management in der AUTOSAR Adaptive Platform [SWS_SM_81242]. Sie ist im Header ara/sm/sm_error_domain.h definiert und leitet sich öffentlich von der fundamentalen Plattform-Ausnahmeklasse ara::core::Exception ab AUTOSAR_AP_SWS_StateManagement §8.1.4 „Class: SmException“. Innerhalb des Dokuments wird die Spezifikation der Klasse mit dem Status DRAFT geführt [SWS_SM_81242].
Im architektonischen Kontext verbindet die Klasse drei zentrale Rollen: das State Management als auslösende Instanz bei fehlschlagenden Zustandsoperationen, die aufrufende Adaptive-Anwendung als Behandler sowie die Basisinfrastruktur von ara::core, welche die gemeinsame Schnittstelle zur Fehlerbehandlung bereitstellt. Als Träger von Fehlerzuständen dient sie dazu, Fehlersituationen aus dem Modul sm synchron über den C++-Ausnahmemechanismus an übergeordnete Kontrollinstanzen weiterzureichen.
Lebenszyklus
Die Instanziierung von ara::sm::SmException erfolgt explizit über den Konstruktor SmException(ara::core::ErrorCode errorCode)[SWS_SM_81243]. Dieser Konstruktor ist als noexcept deklariert und weist sowohl die Eigenschaft der Exceptionsicherheit (exception safe) als auch der Threadsicherheit (thread-safe) auf AUTOSAR_AP_SWS_StateManagement §8.1.4.1.1.1 „SmException“. Dadurch ist garantiert, dass das Erzeugen des Ausnahmeobjekts selbst nicht fehlschlägt oder weitere Ausnahmen auslöst, selbst wenn es in nebenläufigen Ausführungskontexten erzeugt wird.
Nach der Erzeugung wird die Instanz üblicherweise per Wert (by value) geworfen und im aufrufenden Kontext als Referenz auf konstante Objekte (const ara::sm::SmException& oder polymorph als const ara::core::Exception&) abgefangen. Da die Spezifikation keine spezifischen Destruktoren oder manuellen Bereinigungsroutinen vorgibt, dürfte die Zerstörung des Ausnahmeobjekts interpretationsgemäß vollständig der C++-Standardsemantik und den Mechanismen der Basisklasse ara::core::Exception folgen, sobald der zuständige Behandlungsblock verlassen wird. Frage Q-85b1fd2f6082db8e (offen)
Nutzungspfad
Der typische Ablauf beginnt bei einer Anwendungs- oder Plattformkomponente, die eine Zustandssteuerungsanforderung an das State Management richtet. Kann die angeforderte Zustandsänderung intern nicht vollzogen werden oder liegt ein schwerwiegender Ausnahmefehler vor, instanziiert das State Management ein Exemplar von ara::sm::SmException unter Angabe des korrespondierenden ara::core::ErrorCode[SWS_SM_81243].
Sequenzdiagramm: Typische Signalisierung und Abhandlung eines Fehlers mittels SmException im State Management. Quellen: [SWS_SM_81242], [SWS_SM_81243].
Die aufrufende Komponente fängt die geworfene Ausnahme in einem entsprechenden catch-Block ab. Über die von der Basisklasse ara::core::Exception geerbten Methoden kann die Anwendung den gekapselten ara::core::ErrorCode inspizieren, um die Fehlerursache semantisch zuzuordnen und gezielte Maßnahmen zur Fehlerbehebung oder Wiederherstellung des Systemzustands einzuleiten.
Fehlerszenarien
Die Klasse ara::sm::SmException stellt selbst kein fehleranfälliges Operationselement dar, sondern ist das primäre Trägerobjekt für Ausnahmesituationen innerhalb des State Managements [SWS_SM_81242]. Wesentliche Vorbedingung für die Erzeugung ist die Bereitstellung eines initialisierten ara::core::ErrorCode-Objekts beim Konstruktoraufruf [SWS_SM_81243].
Wird eine geworfene ara::sm::SmException im Aufrufstapel von keinem passenden Handler abgefangen, führt dies nach C++-Standardregeln zum Aufruf von std::terminate und damit zum unkontrollierten Abbruch des betroffenen Prozesses. In Implementierungen, die den Verzicht auf Ausnahmen zugunsten von ara::core::Result vorschreiben, wird das Werfen vermieden; steht der Ausnahmepfad jedoch zur Verfügung, sorgt die Kapselung dafür, dass der ursprüngliche Fehlercode unverfälscht zur Fehlerdiagnose transportiert wird.
Dieser Klassen-Leitfaden basiert auf der Spezifikation AUTOSAR Adaptive R25-11. Alle Angaben stützen sich auf die referenzierten Spezifikationspunkte.
UML-Klassendiagramm
Hohle Dreieckspfeile = Vererbung (zeigt zur Basisklasse); Klicken öffnet die jeweilige Klassenseite.
gemini-3.8-flash-medium· 2026-10-13