Definiert die Fehlerdomäne für das Network Management und übersetzt Fehlercodes in Meldungen oder Exceptions.
Kontext
Die Klasse ara::nm::NmErrorDomain fungiert innerhalb der AUTOSAR Adaptive Platform als domänenspezifische Fehlerdomäne für das Subsystem des Network Managements [SWS_ANM_01101]. Als finale Spezialisierung der Basisklasse ara::core::ErrorDomain stellt sie den standardisierten Rahmen zur Identifikation, textuellen Beschreibung und Weiterleitung von Fehlern bereit, die während des Betriebs von Network-Management-Funktionen auftreten können [SWS_ANM_01101].
Innerhalb des NM-Fehlerbehandlungskonzepts verknüpft die Klasse konkrete Fehlerursachen mit den allgemeinen Fehlerbehandlungsmechanismen der Laufzeitumgebung. Hierbei definiert die Klasse über Typ-Aliase eine direkte Zuordnung zu den relevanten Typen: Über den Alias Errc bindet sie die zugrunde liegende Aufzählung NmErrc ein, welche die spezifischen Fehlercodes für das Network Management deklariert [SWS_ANM_01103]. Gleichzeitig referenziert sie über den Alias Exception die spezialisierte Ausnahmeklasse NmException, wodurch Fehler bei Bedarf in den C++-Ausnahmemechanismus überführt werden können [SWS_ANM_01104]. Durch diese Bündelung dient NmErrorDomain als zentrales Bindeglied zwischen den Fehlerzuständen des Moduls und dem fehlerspezifischen Basissystem von ara::core.
Lebenszyklus
Die Erzeugung einer Instanz von ara::nm::NmErrorDomain erfolgt über den parameterlosen Standardkonstruktor [SWS_ANM_01105]. Da die Klasse als final spezifiziert ist, wird eine weitere Untergliederung oder Spezialisierung durch abgeleitete Fehlerdomänen explizit unterbunden [SWS_ANM_01101]. Der Konstruktor ist mit noexcept deklariert, womit die Instanziierung der Fehlerdomäne garantiert ohne das Auslösen von Ausnahmen vollzogen wird [SWS_ANM_01105].
Hinsichtlich der Besitzverhältnisse dürfte eine Instanz dieser Fehlerdomäne typischerweise als langlebiges globales Objekt im Speicher existieren, um über Referenzen in Fehlercode-Objekten dauerhaft verfügbar zu sein. Frage Q-27fedf008cefcdc7 (offen) Ein wesentliches Merkmal im Lebenszyklus ist das Nebenläufigkeitsverhalten: Sowohl die Konstruktion der Instanz [SWS_ANM_01105] als auch sämtliche Schnittstellenfunktionen wie die Namensabfrage [SWS_ANM_01106], die Meldungserzeugung [SWS_ANM_01107] und das Auslösen von Ausnahmen [SWS_ANM_01108] sind vollumfänglich threadsicher (thread-safe) ausgelegt. Da Instanzen von NmErrorDomain keinen veränderlichen Zustand aufweisen, können sie ohne zusätzliche Synchronisationsmaßnahmen nebenläufig aus mehreren Threads genutzt werden.
Nutzungspfad
Der reguläre Nutzungspfad setzt ein, sobald im Network Management ein Fehlerzustand analysiert, protokolliert oder in eine Ausnahme überführt werden soll. Die Fehlerdomäne stellt hierfür die grundlegenden Identifikations- und Auswertefunktionen bereit.
Zur allgemeinen Identifikation der Domäne kann die Methode Name() aufgerufen werden, welche den Namen der Domäne als konstanten Zeichenkettenzeiger zurückliefert [SWS_ANM_01106]. Wenn eine Anwendung oder ein Basissystem die textuelle Bedeutung eines aufgetretenen Fehlercodes ermitteln möchte, wird die Methode Message() unter Übergabe des Fehlercodes aufgerufen [SWS_ANM_01107]. Diese Methode gibt die zugehörige Fehlermeldung als const char* zurück und garantiert durch ihre noexcept-Deklaration, dass der Diagnosevorgang selbst ausnahmesicher bleibt [SWS_ANM_01107].
Erfordert der Kontrollfluss das Werfen einer systemspezifischen Ausnahme, wird die Methode ThrowAsException() herangezogen [SWS_ANM_01108]. Diese Funktion nimmt ein Fehlerobjekt vom Typ ara::core::ErrorCode entgegen und wirft die dazu passende Exception vom Typ NmException [SWS_ANM_01104], [SWS_ANM_01108]. Der Aufruf dürfte in der Praxis primär indirekt über entsprechende Hilfsmethoden von Fehlerobjekten erfolgen. Frage Q-70e50ac95d89f400 (offen)
Sequenzdiagramm: Überführung eines Network-Management-Fehlercodes in eine typspezifische NmException über die Fehlerdomäne. Quellen: [SWS_ANM_01104], [SWS_ANM_01108].
Fehlerszenarien
Im Rahmen der Fehlerbehandlung deckt die Domäne alle Fehlerfälle des Moduls ab, die durch den Enumerations-Typ NmErrc über den Alias Errc definiert werden [SWS_ANM_01103]. Die Domäne selbst ist darauf ausgelegt, die Auswertung von Fehlern deterministisch abzusichern.
Bei der Ermittlung von Textmeldungen über Message() stellt die Deklaration als noexcept sicher, dass selbst bei ungültigen Fehlercodes keine unvorhergesehenen Ausnahmen geworfen werden [SWS_ANM_01107]. Das einzige vorgesehene Szenario, in dem die Klasse aktiv eine Ausnahme auslöst, ist der explizite Aufruf von ThrowAsException() [SWS_ANM_01108]. Über die Deklaration noexcept(false) signalisiert die Methode, dass sie das Programm zwingend in einen Ausnahmebehandlungspfad überführt, indem sie eine Instanz von NmException wirft [SWS_ANM_01104], [SWS_ANM_01108]. Aufrufende Komponenten müssen daher sicherstellen, dass solche Aufrufe bei Bedarf durch entsprechende Ausnahmeblöcke gefangen werden.
Dieser Leitfaden basiert auf der Spezifikation AUTOSAR Adaptive R25-11 und wurde durch einen KI-Assistenten generiert.
gemini-3.8-flash-medium· 2026-10-13