Kapselt foutcodes van Platform Health Management in als thread-veilige exceptie voor mislukte module-operaties.
DOOR AI GEGENEREERDongecontroleerdModel: gemini-3.8-flash-medium · Inspanning: medium · Temperatuur: niet regelbaar · Prompt: 9c0b25d6fb92HerkomstOpen vragen (2)
vertaald uit de Duitse handleidinggemini-3.8-flash-low · 2026-10-13 · Duits origineel
Kapselt foutcodes van Platform Health Management in als thread-veilige exceptie voor mislukte module-operaties.
De klasse ara::phm::PhmException dient in Platform Health Management als centraal exceptietype voor het inkapselen en doorgeven van modulespecifieke fouten aan aanroepende componenten. Deze wordt bij de foutdetectie expliciet met een ara::core::ErrorCode geïnstantieerd en geworpen om een gestructureerde foutafhandeling via bijbehorende catch-blokken mogelijk te maken [SWS_PHM_01243]. Als wezenlijke randvoorwaarde is de constructie ervan gespecificeerd als noexcept, thread-safe evenals exception-safe, waardoor secundaire fouten bij het aanmaken van de exceptie zijn uitgesloten [SWS_PHM_01243]. Interpretatie: Aanroepers vangen het object typisch per referentie op om de ingesloten foutcode zonder dynamische geheugenallocatie deterministisch te evalueren. Vraag (open)
Context
De klasse ara::phm::PhmException fungeert als specifiek exceptietype voor Platform Health Management (PHM) binnen het AUTOSAR Adaptive Platform. Conform de klassedefinitie leidt de klasse zich publiek af van ara::core::Exception en vormt deze de schakel om fouttoestanden van de module phm te communiceren naar aanroepende systeem- en applicatiecomponenten via het gestandaardiseerde C++-exceptiemechanisme. In de systeemarchitectuur heeft de klasse primair een wisselwerking tussen de operatieve PHM-services, die bewakingsfuncties uitvoeren en bij regelovertredingen fouttoestanden detecteren, en de overkoepelende foutafhandelingsroutines van de applicatie. Door de integratie in het fundamentele foutafhandelingsmodel van ara::core wordt gewaarborgd dat domeinspecifieke foutrapportages uit Platform Health Management uniform kunnen worden getransporteerd en verwerkt.
Levenscyclus
De levenscyclus van een instantie van ara::phm::PhmException begint met de expliciete instantiëring in geval van een fout. Conform [SWS_PHM_01243] wordt het object via de constructor PhmException(ara::core::ErrorCode errorCode) onder inclusie van de header ara/phm/phm_error_domain.h aangemaakt. Het aanmaken is gedeclareerd als noexcept en beschikt zowel over de eigenschappen „exception safe” als „thread-safe” [SWS_PHM_01243]. Dit garandeert dat de instantiëring van het exceptie-object zelf onder hoge gelijktijdigheid veilig plaatsvindt en op geen enkel moment onverwachte secundaire excepties veroorzaakt.
Het object kapselt de overgedragen ara::core::ErrorCode in en bezit na het aanmaken ervan een onveranderlijke toestand. Tijdens de stack unwinding wordt het exceptie-object getransporteerd door de runtime-omgeving. De vernietiging vindt deterministisch plaats bij het verlaten van het afhandelende catch-blok volgens de standaard C++-regels. Interpretatie: Instanties worden vermoedelijk doorgaans direct in de throw-expressie op de stack aangemaakt en per referentie (const ara::phm::PhmException&) opgevangen, zodat er aan de aanroeperszijde geen dynamisch geheugenbeheer vereist is. Vraag Q-37fc47021a78a0db (open)
Gebruikspad
Het typische gebruikspad begint wanneer een bewaakte operatie van Platform Health Management mislukt of er een ontoelaatbare toestandafwijking wordt vastgesteld. De activerende PHM-functie initialiseert vervolgens een exceptie-object met de bijbehorende foutcode en werpt dit vanuit [SWS_PHM_01243]. Aan de aanroeperszijde wordt het beschermde codesegment binnen een try-catch-blok uitgevoerd. Vermoedelijk vangen applicaties de exceptie hetzij specifiek als ara::phm::PhmException, hetzij polymorf via de basisklasse ara::core::Exception op. Vraag Q-54638c0dde7d9195 (open) In de exception-handler wordt de ingesloten ara::core::ErrorCode geëxtraheerd om de oorzaak te analyseren en passende tegenmaatregelen of noodloopstrategieën in te leiden.
Sequentiediagram: Typisch verloop van de foutdetectie in PHM via het activeren van ara::phm::PhmException tot aan de evaluatie in de handler. Bronnen: [SWS_PHM_01243].
Foutscenario's
Een centraal bestanddeel van ara::phm::PhmException is het transporteren van de foutcode tijdens runtime. Als voorwaarde voor het aanmaken van het object geldt de overdracht van een geldige ara::core::ErrorCode[SWS_PHM_01243]. De na-voorwaarde van de aanroep is een volledig geïnitialiseerd exceptie-object dat de overgedragen foutcode ongewijzigd beschikbaar stelt voor bevraging.
Aangezien de constructor expliciet is gespecificeerd als noexcept en „exception safe” [SWS_PHM_01243], is het optreden van excepties tijdens de constructie van de exceptie zelf uitgesloten. Het mislukken van het aanmaken van het object kan zodoende niet optreden, wat een voortijdige beëindiging via std::terminate tijdens de foutrapportage voorkomt. De gespecificeerde thread-veiligheid („thread-safe”) beschermt bovendien tegen datacorruptie wanneer meerdere threads parallel fouttoestanden melden via eigen excepties [SWS_PHM_01243]. Foutscenario's betreffen bijgevolg niet de exceptieklasse zelf, maar weerspiegelen de functionele foutoorzaken die zijn gecodeerd in de ingekapselde ara::core::ErrorCode van het PHM-foutdomein.
Deze handleiding werd door een AI gegenereerd op basis van de specificatie van AUTOSAR Adaptive Platform 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