Definieert het foutdomein van de persistency-module voor het beschikbaar stellen van foutcodes, tekstbeschrijvingen en uitzonderingen.
DOOR AI GEGENEREERDongecontroleerdModel: gemini-3.8-flash-medium · Inspanning: medium · Temperatuur: niet regelbaar · Prompt: da81ed3d3cb6HerkomstOpen vragen (1)
vertaald uit de Duitse handleidinggemini-3.8-flash-low · 2026-10-13 · Duits origineel
Definieert het foutdomein van de persistency-module voor het beschikbaar stellen van foutcodes, tekstbeschrijvingen en uitzonderingen.
De klasse ara::per::PerErrorDomain definieert het foutdomein voor de persistency-module en koppelt foutcodes aan beschrijvende meldingen en uitzonderingstypen [SWS_PER_00411]. Zij maakt via thread-safe interfaces het opvragen van de domeinnaam en het resolven van foutbeschrijvingen naar concrete foutwaarden mogelijk. Indien gewenst zet zij fouten via ThrowAsException() om in C++-uitzonderingen [SWS_PER_00350]. Zijn uitzonderingen in de compiler-toolchain gedeactiveerd, dan is deze triggerfunctie niet beschikbaar, zodat de foutcontrole louter op basis van retourwaarden moet plaatsvinden.
Context
De klasse ara::per::PerErrorDomain definieert het specifieke foutdomein voor de persistency-module (Persistency) binnen het AUTOSAR Adaptive Platform. Zij overerft van de basistypedefinitie ara::core::ErrorDomain en is gedeclareerd als final, waarmee zij de basis vormt voor de getypeerde foutafhandeling en foutafbeelding van alle persistency-gerelateerde operaties. Via de gestandaardiseerde type-aliassen Errc[SWS_PER_00411] voor de onderliggende foutcode-enumeratie PerErrc en Exception[SWS_PER_00412] voor de modulespecifieke uitzonderingsbasisklasse PerException koppelt de klasse numerieke foutwaarden, sprekende foutmeldingen en concrete C++-uitzonderingsobjecten. In de platformarchitectuur interacteert het foutdomein nauw met de persistency-services, de aanroepende functionele clusters en de generieke fout- en resultaatstructuren uit ara::core.
Levenscyclus
De creatie van een instantie vindt plaats via de standaardconstructor PerErrorDomain()[SWS_PER_00313]. Deze constructor is gedeclareerd als noexcept, volledig uitzonderingsveilig (exception safe) en thread-safe (thread-safe). Interpretatie: De instantie van PerErrorDomain zal typisch als een langlevend of globaal object worden beheerd, om tijdens het gehele bedrijf consistente domeinvergelijkingen en typerosoluties voor persistency-fouten te waarborgen. Vraag Q-5d90982fddec40a7 (open) Aangezien alle opvragende operaties van de klasse eveneens als thread-safe zijn geclassificeerd, kunnen meerdere threads parallel toegang hebben tot dezelfde domeininstantie zonder dat aanvullende synchronisatiemechanismen op aanroepersniveau vereist zijn.
Gebruikspad
Een typisch gebruikspad omvat de identificatie van het domein, het opvragen van begrijpelijke diagnose-informatie en optioneel het triggeren van uitzonderingen bij opgetreden fouten in de persistency-module. Eerst levert de elementfunctie Name() de unieke identifier van het foutdomein als tekenreeks op [SWS_PER_00314]; zij is gespecificeerd als noexcept, exception-safe en thread-safe. Treedt bij een persistency-operatie een fout op, dan wordt de numerieke foutwaarde ervan via Message() geresolved [SWS_PER_00315]. Deze methode neemt de numerieke foutcode van het type CodeType aan en levert de bijbehorende foutmelding als constante tekenwijzer (const char *) op, eveneens onder garantie van volledige exception safety en thread safety.
Moet een fouttoestand worden omgezet in een C++-uitzondering, dan wordt de functie ThrowAsException() gebruikt [SWS_PER_00350]. Het volgende verloop verduidelijkt het samenspel bij het opvragen van fouten en het triggeren van uitzonderingen:
Sequentiediagram: Typisch verloop van foutcontrole, tekstopvraag en het triggeren van uitzonderingen via PerErrorDomain. Bronnen: [SWS_PER_00314], [SWS_PER_00315], [SWS_PER_00350].
Foutscenario's
Bij het praktische gebruik van ara::per::PerErrorDomain moeten ontwikkelaars rekening houden met de verschillende garanties betreffende foutafhandeling en uitzonderingsveiligheid. Terwijl de opvragende interfaces Name()[SWS_PER_00314] en Message()[SWS_PER_00315] strikt zijn gedeclareerd als noexcept en als exception-safe worden geclassificeerd, geldt de elementfunctie ThrowAsException() als niet-uitzonderingsveilig (not exception safe) [SWS_PER_00350]. Dit gedrag is semantisch gemotiveerd, aangezien het doel van de functie bestaat in het gecontroleerd triggeren van een aan de foutcode equivalente uitzondering (noexcept(false)).
Een wezenlijke randvoorwaarde betreft platforms of buildconfiguraties zonder geactiveerde C++-uitzonderingen: is de uitzonderingsafhandeling in de compiler gedeactiveerd, dan neemt ThrowAsException() conform [SWS_PER_00350] niet deel aan overload resolution. In dergelijke omgevingen moet de applicatiesoftware terugvallen op de evaluatie van foutcodes via de beschikbaar gestelde aliassen Errc[SWS_PER_00411] en de tekstuele beschrijvingen van Message()[SWS_PER_00315], in plaats van uitzonderingsobjecten van het type Exception[SWS_PER_00412] af te vangen.
Deze handleiding is automatisch gegenereerd op basis van de AUTOSAR-specificatievereisten.
Throws the exception associated with the error code. As per [SWS_CORE_10304], this function does not participate in overload resolution when C++ exceptions are disabled in the compiler toolchain.
Throws the exception associated with the error code. As per [SWS_CORE_10304], this function does not participate in overload resolution when C++ exceptions are disabled in the compiler toolchain.
gemini-3.8-flash-low· 2026-10-13 · Duits origineel