Dient der Kapselung und Signalisierung von Fehlern aus dem Persistenzmodul anhand eines spezifischen Fehlercodes.
KI-GENERIERTungeprüftModell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: abab05ca22f0HerkunftOffene Fragen (2)
KI-generiertgemini-3.8-flash-medium · 2026-10-13
Dient der Kapselung und Signalisierung von Fehlern aus dem Persistenzmodul anhand eines spezifischen Fehlercodes.
Die Klasse ara::per::PerException dient in der AUTOSAR Adaptive Platform als spezifischer Ausnahmetyp zur Signalisierung von Fehlern aus dem Persistenzmodul. Sie wird über den Header ara/per/per_error_domain.h bereitgestellt und erbt von der Basisklasse ara::core::Exception[SWS_PER_00355]. Die Instanziierung erfolgt explizit durch Übergabe eines ara::core::ErrorCode, welcher die konkrete Fehlerursache kapselt. Durch die Deklaration des Konstruktors als noexcept ist die Erzeugung vollständig ausnahmesicher sowie threadsicher spezifiziert [SWS_PER_00355].
Kontext
Die Klasse ara::per::PerException fungiert als zentraler, spezialisierter Ausnahmetyp für das funktionale Cluster der Persistenz (Modul per) innerhalb der AUTOSAR Adaptive Platform im Release R25-11. Laut ihrer formalen Syntax ist die Klasse öffentlich von der allgemeinen Basisausnahme ara::core::Exception abgeleitet. Ihre primäre Verantwortung besteht darin, schwerwiegende oder nicht unmittelbar über reguläre Rückgabewerte behandelbare Fehlerzustände aus dem Persistenz-Subsystem an übergeordnete Applikationsschichten zu signalisieren. Definiert wird die Klasse im Header ara/per/per_error_domain.h[SWS_PER_00355]. In der Architektur interagiert sie eng mit der Fehlerbehandlungsinfrastruktur der Plattform, indem jede Instanz zur genauen Fehlerdiagnose einen ara::core::ErrorCode transportiert [SWS_PER_00355].
Lebenszyklus
Der Lebenszyklus eines ara::per::PerException-Objekts ist direkt an die Erkennung und Weitergabe eines Fehlers innerhalb von Persistenzoperationen gebunden. Die Instanziierung erfolgt über einen expliziten Konstruktor, der genau einen Parameter vom Typ ara::core::ErrorCode entgegennimmt [SWS_PER_00355]. Dieser Konstruktor ist als explicit deklariert, um implizite Typkonvertierungen aus Fehlercodes zu unterbinden, und ist mit der Spezifikation noexcept versehen [SWS_PER_00355]. Dies stellt sicher, dass während der Konstruktion des Ausnahmeobjekts selbst keine weiteren Ausnahmen auftreten können; die Erzeugung ist somit vollständig ausnahmesicher (exception safe) [SWS_PER_00355].
Bezüglich der Nebenläufigkeit ist die Erzeugung von ara::per::PerException als threadsicher (thread-safe) spezifiziert [SWS_PER_00355]. Nach dem Aufruf des Konstruktors wird das Objekt entlang des Aufrufstapels geworfen. Besitzverhältnisse und Zerstörung folgen den standardmäßigen C++-Regeln für Ausnahmebehandlung: Das Objekt verbleibt im Speicherbereich des Laufzeitsystems, bis der abfangende catch-Block beendet ist, und wird anschließend deterministisch zerstört.
Nutzungspfad
Der typische Ablauf bei der Nutzung von ara::per::PerException gliedert sich in folgende Schritte:
Fehlererkennung und Code-Erzeugung: Das Persistenzmodul identifiziert einen unzulässigen Zustand oder den Fehlschlag einer Speicheroperation und bildet diesen in einem entsprechenden ara::core::ErrorCode ab.
Instanziierung: Unter Übergabe dieses Fehlercodes wird das Ausnahmeobjekt explizit über PerException(errorCode) erzeugt [SWS_PER_00355].
Auslösen der Ausnahme: Das Persistenz-Subsystem wirft die Ausnahmeinstanz aus der betroffenen Funktionsschnittstelle.
Abfangen und Auswerten: Die aufrufende Anwendung fängt das Objekt spezifisch als ara::per::PerException oder polymorph als ara::core::Exception bzw. std::exception ab. Interpretation: Die Anwendung dürfte anschließend über die von der Basisklasse geerbten Zugriffsmethoden den gekapselten ara::core::ErrorCode auslesen, um gezielte Fehlerbehebungsmaßnahmen einzuleiten. Frage Q-6e48fd125d9938d8 (offen)
Fehlerszenarien
Da ara::per::PerException der Repräsentation von Fehlern dient, stehen bei Fehlerszenarien die Robustheit der Objekterzeugung und die Integrität der Fehlerinformation im Vordergrund. Als wesentliche Vorbedingung erfordert der Konstruktor einen gültigen ara::core::ErrorCode als Eingabeparameter [SWS_PER_00355]. Da der Konstruktor als noexcept deklariert ist, ist ausgeschlossen, dass während der Fehlerberichterstattung sekundäre Ausnahmen auftreten [SWS_PER_00355]. Zudem garantiert die spezifizierte Threadsicherheit, dass auch bei parallelen Fehlern in mehreren Ausführungssträngen keine Datenkorruption oder unkoordinierten Seiteneffekte entstehen [SWS_PER_00355].
Dieser Leitfaden basiert ausschließlich auf den Spezifikationsdaten der AUTOSAR Adaptive Platform Release R25-11.
UML-Klassendiagramm
Hohle Dreieckspfeile = Vererbung (zeigt zur Basisklasse); Klicken öffnet die jeweilige Klassenseite.
gemini-3.8-flash-medium· 2026-10-13