Kapselt domänenspezifische Fehlercodes und Zusatzdaten zur Auswertung oder Überführung in C++-Ausnahmen.
Kontext
Die Klasse ara::core::ErrorCode dient als zentrale Kapselung für Fehlerinformationen in der AUTOSAR Adaptive Platform. Ein Fehlercode bündelt stets einen domänenspezifischen Rohfehlerwert vom Typ ErrorDomain::CodeType mit einer zugehörigen Fehlerdomäne ara::core::ErrorDomain [SWS_CORE_00513]. Die Fehlerdomäne definiert den semantischen Kontext, in dem der Rohwert zu interpretieren ist, und stellt die Verbindung zwischen numerischem Code und fachlicher Bedeutung her [SWS_CORE_00515]. Zusätzlich kann ein ErrorCode herstellerspezifische Zusatzdaten vom Typ ErrorDomain::SupportDataType aufnehmen, um erweiterten Kontext zur Fehlerentstehung ohne dynamische Speicherallokation bereitzustellen [SWS_CORE_00516].
Lebenszyklus
Die Instanziierung eines ErrorCode erfolgt entweder über einen aufzählbaren Typ oder über die explizite Angabe von Rohwert und Fehlerdomäne. Für typsichere Aufzählungswerte existiert ein Konstruktor-Template, das per SFINAE ausschließlich an der Überladungsauflösung teilnimmt, wenn das Argument ein C++-Enum-Typ ist [SWS_CORE_00512]. Alternativ nimmt der direkte Konstruktor einen numerischen Rohwert, eine Referenz auf die zuständige ErrorDomain sowie optionale Zusatzdaten entgegen [SWS_CORE_00513].
Beide Konstruktoren sind als constexpr und noexcept deklariert. Dies garantiert eine vollständige Ausnahmesicherheit bei der Erzeugung und gestattet die Konstruktion bereits zur Übersetzungszeit [SWS_CORE_00512], [SWS_CORE_00513]. Interpretation: Da ErrorCode lediglich elementare Daten und eine Referenz auf die langlebige Domäne verwaltet, verhält sich die Klasse als leichtgewichtiger Werttyp, der frei kopiert und thread-übergreifend ausgelesen werden kann. Frage Q-8ac788b51fb75a1c (offen) Sämtliche beobachtenden Operationen sind als thread-sicher und ausnahmesicher spezifiziert [SWS_CORE_00514], [SWS_CORE_00515].
Nutzungspfad
Ein typischer Nutzungsablauf umfasst die Erzeugung bei Erkennung eines Fehlerzustands, die Inspektion relevanter Metadaten durch den Aufrufer sowie bei Bedarf die Weiterleitung in eine Ausnahmebehandlung:
- Erzeugung: Der Fehler wird über einen domänenspezifischen Aufzählungswert und optionale Kontextdaten konstruiert [SWS_CORE_00512].
- Identifikation: Der Aufrufer fragt den numerischen Rohwert mittels
Value() [SWS_CORE_00514] und die zugeordnete Fehlerdomäne via Domain() [SWS_CORE_00515] ab.
- Diagnose: Ergänzende herstellerspezifische Daten werden über
SupportData() gelesen [SWS_CORE_00516], während Message() eine menschenlesbare Beschreibung als StringView liefert [SWS_CORE_00518].
- Ausnahmeauslösung: Soll der Fehler in einer auf Ausnahmen basierenden Kontrollstruktur propagiert werden, löst der Aufrufer über
ThrowAsException() die zugehörige Ausnahme aus [SWS_CORE_00519].
Sequenzdiagramm: Typische Aufrufabfolge von der Erzeugung über die Inspektion bis zur Delegation an die Ausnahmebehandlung der Fehlerdomäne. Quellen: [SWS_CORE_00512], [SWS_CORE_00514], [SWS_CORE_00518], [SWS_CORE_00519].
Fehlerszenarien
Die Klasse ara::core::ErrorCode fungiert als Brücke zwischen ausnahmefreiem und ausnahmebasiertem Fehlermanagement. Die Methoden Value(), Domain(), SupportData() und Message() besitzen die Zusicherung noexcept und können selbst unter Ressourcenengpässen ohne Risiko von Folgefehlern aufgerufen werden [SWS_CORE_00514], [SWS_CORE_00515], [SWS_CORE_00516], [SWS_CORE_00518].
Ein eigenständiges Fehlerszenario stellt die Methode ThrowAsException() dar, die explizit als noexcept(false) und not exception safe deklariert ist [SWS_CORE_00519]. Ihr Verhalten entspricht dem Aufruf this->Domain().ThrowAsException(*this); sie ermittelt über die verknüpfte ErrorDomain den adäquaten Ausnahmetyp und wirft eine Ausnahme, die die aktuelle ErrorCode-Instanz kapselt [SWS_CORE_00519]. Eine wesentliche Randbedingung besteht darin, dass ThrowAsException() nicht an der Überladungsauflösung teilnimmt, falls in der Compiler-Toolchain C++-Ausnahmen deaktiviert sind [SWS_CORE_00519].
Generiert durch autodocs-KI basierend auf AUTOSAR Adaptive Platform R25-11.
gemini-3.8-flash-medium· 2026-10-13