Verwaltet Fehlercodes des Clusters ara::core, übersetzt sie in Fehlermeldungen und wirft zugehörige Ausnahmen.
Kontext
Die Klasse ara::core::CoreErrorDomain repräsentiert die spezifische Fehlerdomäne für alle Fehlerzustände, die ihren Ursprung im funktionalen Cluster ara::core haben. Sie ist als finale Spezialisierung von ErrorDomain definiert und verhindert damit eine weitere Ableitung. Die Klasse stellt über die Methode Name() den eindeutigen Kurznamen der Domäne bereit [SWS_CORE_05242]. Für eine konsistente Integration in das AUTOSAR-Fehlerbehandlungsmodell definiert CoreErrorDomain zentrale Typaliase: Errc verweist als Alias direkt auf die Aufzählung CoreErrc [SWS_CORE_05231], während Exception den Alias für die zugehörige Basisausnahmeklasse CoreException bildet [SWS_CORE_05232]. Zu den wichtigsten Interaktionspartnern gehören die generischen Fehlerkapseln vom Typ ErrorCode, welche eine Referenz auf die jeweilige Fehlerdomäne halten, sowie ausführende Komponenten, die Fehlerzustände diagnostizieren oder behandeln.
Lebenszyklus
Die Erzeugung einer CoreErrorDomain erfolgt über den parameterlosen Standardkonstruktor constexpr CoreErrorDomain() noexcept [SWS_CORE_05241]. Da der Konstruktor als constexpr und noexcept deklariert ist, kann die Instanz bereits zur Übersetzungszeit ohne Allokationsaufwand oder Ausnahmegefahr erzeugt werden.
Interpretation: Da Fehlerdomänen im AUTOSAR-Adaptive-Standard zustandslos konzipiert sind und ausschließlich konstante Metadaten sowie Transformationslogik bereitstellen, dürfte typischerweise eine globale oder statische Singleton-Instanz im System existieren, auf die clusterweit zugegriffen wird. Frage Q-7b4761bf124c5755 (offen) Die Instanz bleibt über die gesamte Laufzeit des Prozesses hinweg gültig. Hinsichtlich der Nebenläufigkeit sind die Operationen der Klasse als threadsicher spezifiziert [SWS_CORE_05241], [SWS_CORE_05242], [SWS_CORE_05243], wodurch gleichzeitige Abfragen aus mehreren parallelen Threads ohne zusätzliche Synchronisationsmaßnahmen erlaubt sind.
Nutzungspfad
Im laufenden Betrieb wird CoreErrorDomain vor allem in zwei typischen Szenarien durch das Laufzeitsystem oder Anwendungscode konsultiert: zur textuellen Fehlerinspektion und zur Ausnahmebehandlung.
Liegt ein aufgetretener Fehler vor, kann über die Elementfunktion Message() unter Übergabe des numerischen Fehlercodes die zugehörige Textnachricht abgefragt werden [SWS_CORE_05243]. Die Spezifikation sichert verbindlich zu, dass diese Funktion niemals einen Nullzeiger (nullptr) liefert, sodass der zurückgegebene const char* gefahrlos für Diagnoseausgaben oder Protokollierung verwendet werden kann. Soll ein Fehler nicht als Rückgabewert behandelt, sondern als C++-Ausnahme propagiert werden, dient hierzu die Methode ThrowAsException() [SWS_CORE_05244]. Diese nimmt eine ErrorCode-Instanz entgegen, instanziiert die korrespondierende CoreException und wirft diese in den aktuellen Aufrufstapel.
Sequenzdiagramm: Typischer Ablauf zur Übersetzung von Fehlercodes und bedingten Auslösung von Ausnahmen. Quellen: [SWS_CORE_05243], [SWS_CORE_05244]
Fehlerszenarien
Die Funktionen Name() und Message() sowie der Konstruktor sind als noexcept deklariert und als ausnahmesicher eingestuft [SWS_CORE_05241], [SWS_CORE_05242], [SWS_CORE_05243]. Sie werfen selbst unter Fehlerbedingungen keine Ausnahmen und erzeugen keine eigenen Fehlercodes.
Demgegenüber ist ThrowAsException() explizit mit noexcept(false) versehen und als nicht ausnahmesicher gekennzeichnet, da das deterministische Werfen einer Ausnahme (vom Typ CoreException) die primäre Aufgabe dieser Schnittstelle darstellt [SWS_CORE_05244]. Als zentrale architektonische Vorbedingung gilt: Falls in der verwendeten Toolchain bzw. den Compiler-Einstellungen C++-Ausnahmen deaktiviert sind, darf diese Funktion nicht an der Überladungsauflösung teilnehmen [SWS_CORE_05244]. Dies verhindert Kompilierungsfehler in Systemumgebungen, die dem fehlertoleranten Embedded-Ansatz ohne C++-Ausnahmebehandlung folgen.
Dieser Leitfaden wurde durch ein KI-System auf Basis der Spezifikation R25-11 generiert.
gemini-3.8-flash-medium· 2026-10-13