Dient als uitzonderingstype voor het melden van core-fouten en kapselt een foutcode in voor gestructureerde uitzonderingsafhandeling.
DOOR AI GEGENEREERDongecontroleerdModel: gemini-3.8-flash-medium · Inspanning: medium · Temperatuur: niet regelbaar · Prompt: 2b622ea04d25HerkomstOpen vragen (2)
vertaald uit de Duitse handleidinggemini-3.8-flash-low · 2026-10-13 · Duits origineel
Dient als uitzonderingstype voor het melden van core-fouten en kapselt een foutcode in voor gestructureerde uitzonderingsafhandeling.
De klasse ara::core::CoreException dient als centraal uitzonderingstype voor het overbrengen van fouten uit het functionele gebied ara::core en erft hiervoor over van de basisklasse Exception. De instantiëring vindt verplicht plaats via de constructor onder overdracht van een specifieke ErrorCode, die de foutoorzaak inkapselt [SWS_CORE_05212]. Als essentiële randvoorwaarde garandeert de implementatie volledige thread-safety en exception-safety, evenals een uitzonderingsloze noexcept-garantie bij het aanmaken [SWS_CORE_05212]. Aanroepers vangen de uitzondering op om de aanwezige fouttoestand gecontroleerd af te handelen.
Context
De klasse ara::core::CoreException dient als centraal uitzonderingstype voor fouten die optreden binnen het functionele gebied ara::core. Volgens de klassedeclaratie erft zij publiek over van de basisklasse Exception. De kerntaak van CoreException bestaat erin een opgetreden foutgebeurtenis, die wordt beschreven door een ErrorCode-object, over te brengen naar het uitzonderingsafhandelingsmodel van C++. Binnen de platformcontext fungeert de klasse daarmee als brug tussen de foutdetecterende infrastructuurcomponent en de aanroepende applicatie- of platformcode. Wanneer een bewerking in ara::core mislukt en de interface in een uitzondering voorziet, wordt CoreException geïnstantieerd en gesignaleerd. Daarbij accepteert de constructor conform [SWS_CORE_05212] een concreet object van het type ErrorCode, dat de functionele oorzaak en het domein van de opgetreden fout inkapselt. De inbedding in de klassenhiërarchie stelt hogere architectuurlagen in staat fouten hetzij specifiek als CoreException op te vangen, hetzij generiek via de basisklasse Exception af te handelen.
Contextdiagram: Relatie van CoreException tot ErrorCode en de basisklasse Exception. Bronnen: [SWS_CORE_05212]
Levenscyclus
De levenscyclus van een instantie van CoreException begint in de context van foutdetectie. Het aanmaken geschiedt via de constructor explicit CoreException(ErrorCode err) noexcept conform [SWS_CORE_05212]. Door het sleutelwoord explicit wordt een impliciete conversie vanuit een ErrorCode verhinderd, zodat een doelbewuste objectcreatie wordt afgedwongen. Een wezenlijk kenmerk van de constructie is de specificatie als noexcept[SWS_CORE_05212]: de instantiëring zelf kan geen verdere uitzonderingen veroorzaken, waarmee een betrouwbare uitzonderingscreatie ook in kritieke systeemtoestanden gewaarborgd is. Bovendien is de uitzonderingsveiligheid geclassificeerd als volkomen veilig (exception safe) en geldt de bewerking als thread-safe (thread-safe) [SWS_CORE_05212]. Na aanmaak wordt het uitzonderingsobject gewoonlijk doorgegeven middels throw. Tijdens stack unwinding wordt de uitzondering getransporteerd totdat deze door een passende exception handler wordt gebonden. De levenscyclus eindigt bij het verlaten van het opvangende blok, waarna de vernietiging van het uitzonderingsobject deterministisch wordt voltooid.
Gebruikspad
Het reguliere gebruikspad van CoreException is onderverdeeld in drie opeenvolgende fasen: diagnose, werpen en opvangen. Eerst identificeert een component van de module core een afwijking van het gewenste gedrag en instantieert een bijbehorende ErrorCode. Vervolgens wordt de uitzondering gecreëerd door de constructor CoreException(err) aan te roepen [SWS_CORE_05212]. Onmiddellijk daarna vindt het werpen van het object in de uitvoeringscontext plaats. Op applicatieniveau wordt de aanroep in een beschermd blok uitgevoerd. Doet de uitzondering zich voor, dan vangt een catch-blok de instantie op – doorgaans als constante referentie naar CoreException of polymorf via de basisklasse Exception. In de handler kan de fout worden geanalyseerd, gelogd of hersteld. Aangezien het headerbestand #include "ara/core/core_error_domain.h" conform [SWS_CORE_05212] is voorgeschreven, is de klassedeclaratie consistent beschikbaar voor applicatiemodules.
Foutscenario's
Binnen het bereik van foutscenario's dient CoreException zelf als signaaldrager en werpt tijdens haar eigen creatie geen secundaire fouten. Omdat de constructor als noexcept is gedeclareerd [SWS_CORE_05212], is het scenario van een mislukte constructie uitgesloten. De specificatie garandeert strikte exception-safety en thread-safety [SWS_CORE_05212], zodat ook gelijktijdige toegang bij de creatie probleemloos blijft. Een kritiek foutscenario ontstaat op systeemniveau wanneer een geworpen CoreException door geen enkele bovenliggende scope wordt opgevangen, wat in standaard-C++ vermoedelijk leidt tot de aanroep van std::terminate. Vraag Q-492683ca01bebc7d (open) Ontwikkelaars moeten er daarom voor zorgen dat aanroepen van potentieel werpende ara::core-functies zijn ingebed in geschikte uitzonderingsafhandelingsblokken. Een ander potentieel scenario betreft het doorsturen over componentgrenzen heen, waarbij de aanwezige ErrorCode correct moet worden geïnterpreteerd om passende herstelmaatregelen te initiëren.
Deze handleiding is gegenereerd door een AI-curatie-assistent op basis van AUTOSAR 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