Kapselt Fehlercodes des Platform Health Managements als threadsichere Ausnahme für fehlgeschlagene Moduloperationen.
KI-GENERIERTungeprüftModell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: 9c0b25d6fb92HerkunftOffene Fragen (2)
KI-generiertgemini-3.8-flash-medium · 2026-10-13
Kapselt Fehlercodes des Platform Health Managements als threadsichere Ausnahme für fehlgeschlagene Moduloperationen.
Die Klasse ara::phm::PhmException dient im Platform Health Management als zentraler Ausnahmetyp zur Kapselung und Weitergabe modulspezifischer Fehler an aufrufende Komponenten. Sie wird bei der Fehlererkennung explizit mit einem ara::core::ErrorCode instanziiert und geworfen, um eine strukturierte Fehlerbehandlung über entsprechende catch-Blöcke zu ermöglichen [SWS_PHM_01243]. Als wesentliche Randbedingung ist ihre Konstruktion noexcept, thread-safe sowie exception-safe spezifiziert, wodurch Sekundärfehler bei der Ausnahmeerzeugung ausgeschlossen sind [SWS_PHM_01243]. Interpretation: Aufrufer fangen das Objekt typischerweise per Referenz ab, um den enthaltenen Fehlercode ohne dynamische Speicherallokation deterministisch auszuwerten. Frage (offen)
Kontext
Die Klasse ara::phm::PhmException fungiert als dedizierter Ausnahmetyp für das Platform Health Management (PHM) innerhalb der AUTOSAR Adaptive Platform. Gemäß Klassendefinition leitet sich die Klasse öffentlich von ara::core::Exception ab und stellt das Bindeglied dar, um Fehlerzustände des Moduls phm an aufrufende System- und Anwendungskomponenten über den standardisierten C++-Ausnahmemechanismus zu kommunizieren. In der Systemarchitektur interagiert die Klasse primär zwischen den operativen PHM-Diensten, welche Überwachungsfunktionen ausführen und bei Regelverletzungen Fehlerzustände detektieren, sowie den übergeordneten Fehlerbehandlungsroutinen der Anwendung. Durch die Integration in das fundamentale Fehlerbehandlungsmodell von ara::core wird sichergestellt, dass domänenspezifische Fehlerberichte aus dem Platform Health Management einheitlich transportiert und verarbeitet werden können.
Lebenszyklus
Der Lebenszyklus einer Instanz von ara::phm::PhmException beginnt mit der expliziten Instanziierung im Fehlerfall. Gemäß [SWS_PHM_01243] wird das Objekt über den Konstruktor PhmException(ara::core::ErrorCode errorCode) unter Einbindung des Headers ara/phm/phm_error_domain.h erzeugt. Die Erzeugung ist als noexcept deklariert und weist sowohl die Eigenschaften „exception safe“ als auch „thread-safe“ auf [SWS_PHM_01243]. Dies garantiert, dass die Instanziierung des Ausnahmeobjekts selbst unter hoher Nebenläufigkeit sicher erfolgt und zu keinem Zeitpunkt unerwartete Sekundärausnahmen auslöst.
Das Objekt kapselt den übergebenen ara::core::ErrorCode und besitzt nach seiner Erzeugung einen unveränderlichen Zustand. Während des Stack-Unwindings wird das Ausnahmeobjekt durch die Laufzeitumgebung transportiert. Die Zerstörung erfolgt deterministisch beim Verlassen des behandelnden catch-Blocks gemäß den standardmäßigen C++-Regeln. Interpretation: Instanzen dürften üblicherweise direkt im throw-Ausdruck auf dem Stack erzeugt und per Referenz (const ara::phm::PhmException&) abgefangen werden, sodass aufruferseitig keine dynamische Speicherverwaltung erforderlich ist. Frage Q-37fc47021a78a0db (offen)
Nutzungspfad
Der typische Nutzungspfad beginnt, wenn eine überwachte Operation des Platform Health Managements fehlschlägt oder eine unzulässige Zustandsabweichung festgestellt wird. Die auslösende PHM-Funktion initialisiert daraufhin ein Ausnahmeobjekt mit dem zugehörigen Fehlercode und wirft dieses aus [SWS_PHM_01243]. Aufruferseitig wird der geschützte Codeabschnitt innerhalb eines try-catch-Blocks ausgeführt. Vermutlich fangen Anwendungen die Ausnahme entweder spezifisch als ara::phm::PhmException oder polymorph über die Basisklasse ara::core::Exception ab. Frage Q-54638c0dde7d9195 (offen) Im Exception-Handler wird der enthaltene ara::core::ErrorCode extrahiert, um die Ursache zu analysieren und entsprechende Gegenmaßnahmen oder Notlaufstrategien einzuleiten.
Sequenzdiagramm: Typischer Ablauf von der Fehlererkennung im PHM über das Auslösen von ara::phm::PhmException bis zur Auswertung im Handler. Quellen: [SWS_PHM_01243].
Fehlerszenarien
Zentraler Bestandteil von ara::phm::PhmException ist der Transport des Fehlercodes zur Laufzeit. Als Vorbedingung für die Objekterzeugung gilt die Übergabe eines gültigen ara::core::ErrorCode[SWS_PHM_01243]. Nachbedingung des Aufrufs ist ein vollständig initialisiertes Ausnahmeobjekt, welches den übergebenen Fehlercode unverändert zur Abfrage bereitstellt.
Da der Konstruktor explizit als noexcept und „exception safe“ spezifiziert ist [SWS_PHM_01243], ist das Auftreten von Ausnahmen während der Konstruktion der Ausnahme selbst ausgeschlossen. Ein Fehlschlagen der Objekterzeugung kann somit nicht eintreten, was einen vorzeitigen Abbruch via std::terminate während des Fehlerberichts verhindert. Die spezifizierte Thread-Sicherheit („thread-safe“) schützt zudem vor Datenkorruption, wenn mehrere Threads parallel Fehlerzustände über eigene Ausnahmen melden [SWS_PHM_01243]. Fehlerszenarien betreffen folglich nicht die Ausnahmeklasse selbst, sondern spiegeln die fachlichen Fehlerursachen wider, die im gekapselten ara::core::ErrorCode der PHM-Fehlerdomäne codiert sind.
Dieser Leitfaden wurde durch eine KI auf Basis der Spezifikation von AUTOSAR Adaptive Platform R25-11 generiert.
UML-Klassendiagramm
Hohle Dreieckspfeile = Vererbung (zeigt zur Basisklasse); Klicken öffnet die jeweilige Klassenseite.
gemini-3.8-flash-medium· 2026-10-13