DEENESPTFRRUARHIKOZHNL

class ara::phm::PhmException

[SWS_PHM_01242] Upstream: RS_AP_00119

class PhmException :        public ara::core::Exception {...};

Exception type thrown by Platform Health Management.

Header-Datei#include "ara/phm/phm_error_domain.h"
Forwarding-Header#include "ara/phm/phm_fwd.h"
Scopenamespace ara::phm
Basisklasse(n)ara::core::Exception

User GuideKI-GENERIERT

Kapselt Fehlercodes des Platform Health Managements als threadsichere Ausnahme für fehlgeschlagene Moduloperationen.
KI-GENERIERT ungeprüft Modell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: 9c0b25d6fb92 Herkunft Offene 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.

Nutzungspfad für das Auslösen und Behandeln von PhmExceptionAnwendungPHM-DienstFehlerbehandlungPHM-FunktionsaufrufErkennung eines internen FehlersPhmException(errorCode) werfenAuswertung von ErrorCodeRückkehr nach Fehlerbehandlung

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.

G nara__phm__PhmException101 PhmException + PhmException() nara__core__Exception792 Exception nara__phm__PhmException101->nara__core__Exception792 nstd__exception10 std::exception nara__core__Exception792->nstd__exception10

Konstruktoren und Destruktor

PhmException function

Construct a new PlatformHealthManagement exception object containing an error code.

explicit PhmException (ara::core::ErrorCode errorCode) noexcept;

Dokumentation der Methoden

function PhmException [SWS_PHM_01243] Upstream: RS_AP_00119, RS_AP_00159

explicit PhmException (ara::core::ErrorCode errorCode) noexcept;

Construct a new PlatformHealthManagement exception object containing an error code.

Header-Datei#include "ara/phm/phm_error_domain.h"
Scopeclass ara::phm::PhmException
Exception-Sicherheitexception safe
Thread-Sicherheitthread-safe

Parameter (in)

ParameterBeschreibung
errorCodeThe error code.

Request a governed re-review of this record. The record is not changed immediately.

Record
AUTOSAR/AP/record/SWS_PHM_01243
Status
valid/unmigrated
Version
AUTOSAR/AP/record/SWS_PHM_01243@rel:R25-11#9af686bd
Content hash
9af686bd
Source
https://www.autosar.org/fileadmin/standards/R25-11/AP/AUTOSAR_AP_SWS_PlatformHealthManagement.pdf#nameddest=SWS_PHM_01243
Status: valid/unmigrated Version: rel:R25-11#47b59c13 Versionshistorie & Revisions (1 transition, 5 revision)
Current State
valid/unmigrated
Reason
mechanically backfilled by migriere_status_backfill.py -- no per-field curation history exists yet for this record
Campaign
2026-08-13-status-backfill
Active Version
AUTOSAR/AP/record/SWS_PHM_01243@rel:R25-11#47b59c13
Point-in-Time History:
Recorded Revisions (5):
  • R25-11rel:R25-11#9af686bd2026-09-30
  • R22-11rel:R22-11#eabc2e272026-10-14
  • R23-11rel:R23-11#b6f2d9e42026-10-14
  • R24-11rel:R24-11#47b59c132026-10-14
  • R25-11rel:R25-11#47b59c132026-10-14 active
DateActorTransitionReason / RationaleCampaign
2026-08-13toolnone → valid/unmigratedmechanically backfilled by migriere_status_backfill.py -- no per-field curation history exists yet for this record2026-08-13-status-backfill