Dient als Ausnahmetyp zur Meldung von Core-Fehlern und kapselt einen Fehlercode zur strukturierten Ausnahmebehandlung.
KI-GENERIERTungeprüftModell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: 2b622ea04d25HerkunftOffene Fragen (2)
KI-generiertgemini-3.8-flash-medium · 2026-10-13
Dient als Ausnahmetyp zur Meldung von Core-Fehlern und kapselt einen Fehlercode zur strukturierten Ausnahmebehandlung.
Die Klasse ara::core::CoreException dient als zentraler Ausnahmetyp für die Übermittlung von Fehlern aus dem Funktionsbereich ara::core und leitet hierfür von der Basisklasse Exception ab. Die Instanziierung erfolgt verpflichtend über den Konstruktor unter Übergabe eines spezifischen ErrorCode, welcher die Fehlerursache kapselt [SWS_CORE_05212]. Als wesentliche Randbedingung garantiert die Implementierung vollständige Thread-Sicherheit und Exception-Sicherheit sowie eine ausnahmslose noexcept-Garantie bei der Erzeugung [SWS_CORE_05212]. Aufrufer fangen die Ausnahme ab, um den enthaltenen Fehlerzustand kontrolliert zu behandeln.
Kontext
Die Klasse ara::core::CoreException dient als zentraler Ausnahmetyp für Fehler, die innerhalb des Funktionsbereichs ara::core auftreten. Gemäß der Klassendeklaration leitet sie öffentlich von der Basisklasse Exception ab. Die wesentliche Aufgabe von CoreException besteht darin, ein aufgetretenes Fehlerereignis, das durch ein ErrorCode-Objekt beschrieben wird, in das Ausnahmebehandlungsmodell von C++ zu überführen. Im Plattformkontext agiert die Klasse damit als Brücke zwischen der fehlererkennenden Infrastrukturkomponente und dem aufrufenden Anwendungs- oder Plattformcode. Wenn eine Operation in ara::core fehlschlägt und die Schnittstelle eine Ausnahme vorsieht, wird CoreException instanziiert und signalisiert. Dabei nimmt der Konstruktor gemäß [SWS_CORE_05212] ein konkretes Objekt vom Typ ErrorCode entgegen, welches die fachliche Ursache und Domäne des aufgetretenen Fehlers kapselt. Die Einbettung in die Klassenhierarchie ermöglicht es höheren Architekturschichten, Fehler entweder spezifisch als CoreException abzufangen oder generisch über die Basisklasse Exception zu behandeln.
Kontextdiagramm: Beziehung von CoreException zu ErrorCode und der Basisklasse Exception. Quellen: [SWS_CORE_05212]
Lebenszyklus
Der Lebenszyklus einer Instanz von CoreException beginnt im Kontext der Fehlererkennung. Die Erzeugung erfolgt über den Konstruktor explicit CoreException(ErrorCode err) noexcept gemäß [SWS_CORE_05212]. Durch das Schlüsselwort explicit wird eine implizite Konvertierung aus einem ErrorCode unterbunden, sodass eine bewusste Objekterzeugung erzwungen wird. Ein wesentliches Merkmal der Konstruktion ist die Spezifikation als noexcept[SWS_CORE_05212]: Die Instanziierung selbst kann keine weiteren Ausnahmen auslösen, womit eine verlässliche Ausnahmeerzeugung auch in kritischen Systemzuständen sichergestellt ist. Zudem ist die Ausnahmesicherheit als vollkommen sicher (exception safe) eingestuft und die Operation gilt als threadsicher (thread-safe) [SWS_CORE_05212]. Nach der Erzeugung wird das Ausnahmeobjekt üblicherweise mittels throw weitergegeben. Während des Stack-Unwindings wird die Ausnahme transportiert, bis sie von einem passenden Ausnahme-Handler gebunden wird. Der Lebenszyklus endet mit dem Verlassen des fangenden Blocks, woraufhin die Zerstörung des Ausnahmeobjekts deterministisch vollzogen wird.
Nutzungspfad
Der reguläre Nutzungspfad von CoreException gliedert sich in drei aufeinanderfolgende Phasen: Diagnose, Wurf und Abfang. Zunächst identifiziert eine Komponente des Moduls core eine Abweichung vom Sollverhalten und instanziiert einen entsprechenden ErrorCode. Anschließend wird die Ausnahme erzeugt, indem der Konstruktor CoreException(err) aufgerufen wird [SWS_CORE_05212]. Unmittelbar danach erfolgt das Werfen des Objekts in den Ausführungskontext. Auf Anwenderebene wird der Aufruf in einem geschützten Block ausgeführt. Tritt der Ausnahmefall ein, fängt ein catch-Block die Instanz ab – typischerweise als konstante Referenz auf CoreException oder polymorph über die Basisklasse Exception. Im Handler kann der Fehler analysiert, protokolliert oder behoben werden. Da die Header-Datei #include "ara/core/core_error_domain.h" gemäß [SWS_CORE_05212] vorgegeben ist, steht die Klassendeklaration für Anwendungsmodule konsistent bereit.
Fehlerszenarien
Im Bereich der Fehlerszenarien dient CoreException selbst als Signalträger und wirft während ihrer eigenen Erzeugung keine sekundären Fehler. Da der Konstruktor als noexcept deklariert ist [SWS_CORE_05212], ist das Szenario eines Konstruktionsfehlschlags ausgeschlossen. Die Spezifikation garantiert strikte Exception-Sicherheit und Thread-Sicherheit [SWS_CORE_05212], sodass auch der nebenläufige Zugriff bei der Erzeugung unbedenklich bleibt. Ein kritisches Fehlerszenario entsteht auf Systemebene dann, wenn eine geworfene CoreException von keinem übergeordneten Scope abgefangen wird, was in Standard-C++ zum Aufruf von std::terminate führen dürfte. Frage Q-492683ca01bebc7d (offen) Entwickler müssen daher sicherstellen, dass Aufrufe von potenziell werfenden ara::core-Funktionen in geeignete Ausnahmebehandlungsblöcke eingebettet sind. Ein weiteres potenzielles Szenario betrifft das Weiterleiten über Komponentengrenzen hinweg, bei dem der enthaltene ErrorCode korrekt interpretiert werden muss, um adäquate Fehlerbehebungsmaßnahmen einzuleiten.
Dieser Leitfaden wurde durch einen KI-Kurations-Assistenten auf Basis von AUTOSAR R25-11 generiert.
UML-Klassendiagramm
Hohle Dreieckspfeile = Vererbung (zeigt zur Basisklasse); Klicken öffnet die jeweilige Klassenseite.
gemini-3.8-flash-medium· 2026-10-13