Kapselt foutcodes van Execution Management in als C++-exceptie voor synchrone foutafhandeling.
DOOR AI GEGENEREERDongecontroleerdModel: gemini-3.8-flash-medium · Inspanning: medium · Temperatuur: niet regelbaar · Prompt: e102ca6cc8edHerkomstOpen vragen (3)
vertaald uit de Duitse handleidinggemini-3.8-flash-low · 2026-10-13 · Duits origineel
Kapselt foutcodes van Execution Management in als C++-exceptie voor synchrone foutafhandeling.
De klasse ara::exec::ExecException dient als finale exceptieklasse van Execution Management voor het inkapselen en signaleren van modulespecifieke fouten via het C++-exceptiemechanisme. Instanties worden in geval van een fout onder opgave van een ara::core::ErrorCode via de thread-veilige constructor aangemaakt en geworpen, waarna aanroepende plaatsen deze opvangen en analyseren [SWS_EM_02283]. Als fundamentele randvoorwaarde is de constructie gespecificeerd als noexcept, waardoor het aanmaken van objecten gegarandeerd exceptieveilig blijft [SWS_EM_02283]. Niet-afgehandelde excepties moeten worden vermeden, omdat ze leiden tot systeembeëindiging.
Context
De klasse ara::exec::ExecException vormt de centrale exceptieklasse van de module Execution Management (exec) binnen het AUTOSAR Adaptive Platform. Conform de specificatie dient deze als inkapseling voor excepties die door Execution Management worden geactiveerd. De klassedeclaratie definieert deze als final met publieke overerving van de standaard basisexceptieklasse ara::core::Exception, waardoor deze naadloos aansluit op het uniforme concept voor exceptie- en foutafhandeling van het Adaptive Platform. Door de identifier final is verdere specialisatie of subclassificatie uitgesloten.
De exceptieklasse wordt gedeclareerd in de header #include "ara/exec/exec_error_domain.h"[SWS_EM_02283]. De primaire functionele verantwoordelijkheid van ara::exec::ExecException ligt in het transporteren van modulespecifieke fouttoestanden via het C++-exceptiemechanisme. Interpretatie: Het werpen van deze exceptie komt vermoedelijk vooral tot uiting in uitvoeringsomgevingen waarin fouttoestanden van Execution Management niet louter via op waarden gebaseerde fouttypen worden doorgegeven, maar een synchrone afbreking van de control flow via C++-excepties vereist is. Vraag Q-8faec8c282524965 (open)
Levenscyclus
De levenscyclus van een instantie van ara::exec::ExecException begint met de expliciete constructie onder overdracht van een foutcode. De constructor explicit ExecException(ara::core::ErrorCode errorCode) noexcept maakt een nieuw exceptie-object aan dat de overgedragen foutcode inkapselt [SWS_EM_02283]. De aanduiding als noexcept zorgt ervoor dat het aanmaken van objecten zelfs in de context van een reeds bestaande foutafhandeling gegarandeerd vrij van storingen blijft en geen opeenvolgende gevolgfouten veroorzaakt [SWS_EM_02283].
Wat betreft de uitvoeringsveiligheid is de constructie expliciet geclassificeerd als behoudens excepties („exception safe”) en thread-veilig („thread-safe”) [SWS_EM_02283]. Dit maakt het betrouwbaar aanmaken van exceptie-instanties over verschillende threads heen mogelijk, zonder dat aanvullende synchronisatiemechanismen nodig zijn. Na het activeren via throw gaat het object over naar het beheer van het C++-runtimesysteem. Interpretatie: De vernietiging van het exceptie-object vindt automatisch plaats na het verlaten van het afhandelende catch-blok tijdens de reguliere stack unwinding, waardoor er geen expliciet levenscyclusbeheer door de aanroeper noodzakelijk is. Vraag Q-ec22ad5f177555aa (open)
Gebruikspad
Een typisch gebruikspad van ara::exec::ExecException omvat het instantiëren in geval van een fout binnen Execution Management en het gecontroleerd opvangen in de aanroepende applicatiecontext:
Foutidentificatie en instantiëring: Treedt er in Execution Management een exceptieconditie op, dan wordt de oorzaak afgebeeld in een ara::core::ErrorCode van het bijbehorende foutdomein en gebruikt voor de expliciete initialisatie van een ara::exec::ExecException[SWS_EM_02283].
Signalering: De geïnitialiseerde exceptie-instantie wordt geworpen, waardoor het reguliere uitvoeringspad wordt onderbroken en de stack unwinding wordt ingeleid.
Opvangen: Aanroepende componenten vangen het exceptie-object hetzij gericht op als const ara::exec::ExecException&, hetzij algemener via de polymorfe basisklasse const ara::core::Exception&.
Evaluatie: Interpretatie: Aangezien het object met een ara::core::ErrorCode is geconstrueerd [SWS_EM_02283] en overerft van ara::core::Exception, zal de ontvanger vermoedelijk de ingesloten foutcode extraheren via interfaces van de basisklasse om modulespecifieke herstel- of loggingmaatregelen uit te voeren. Vraag Q-d4671c34f5aab6f9 (open)
Foutscenario's
Als gespecialiseerde exceptieklasse is ara::exec::ExecException erop ingericht om bestaande foutsituaties af te beelden, zonder bij het eigen gebruik ervan nieuwe fouten te introduceren. Voor het aanmaken vereist de constructor de overdracht van een ara::core::ErrorCode[SWS_EM_02283]. Omdat de constructor is gedeclareerd als noexcept, zijn preconditiefouten bij de instantiëring uitgesloten die het aanmaken van het exceptie-object zouden kunnen belemmeren [SWS_EM_02283].
Een wezenlijk foutscenario op systeemniveau ligt in het onvolledig opvangen van geworpen excepties. Blijft een door ara::exec::ExecException getriggerde exceptie langs de aanroephiërarchie onbehandeld, dan treedt de standaard C++-runtime-afhandeling in werking, wat doorgaans uitmondt in de aanroep van std::terminate en daarmee in het voortijdig afbreken van het proces. Interagerende softwarecomponenten moeten er daarom voor zorgen dat aanroepen naar potentieel werpende functies van Execution Management worden beveiligd met adequate try-catch-blokken.
Deze handleiding is gegenereerd door een AI op basis van de specificatie 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