Dient als API-Ausnahmeklasse zum Kapseln und Melden von Fehlern der Kommunikationsverwaltung über Fehlercodes.
KI-GENERIERTungeprüftModell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: becb2133e102HerkunftOffene Fragen (2)
KI-generiertgemini-3.8-flash-medium · 2026-10-13
Dient als API-Ausnahmeklasse zum Kapseln und Melden von Fehlern der Kommunikationsverwaltung über Fehlercodes.
Die Klasse ara::com::ComException dient in AUTOSAR Adaptive als zentrale Ausnahmeklasse zur Signalisierung von Fehlern bei Aufrufen der Kommunikations-API [SWS_CM_11327]. Sie kapselt einen ara::core::ErrorCode und wird bei fehlgeschlagenen Operationen instanziiert und geworfen, wobei ihr Konstruktor als ausnahmesicher und nicht-werfend definiert ist [SWS_CM_11328]. Sind C++-Ausnahmen in der Compiler-Toolchain deaktiviert, entfallen die entsprechenden werfenden API-Überladungen vollständig aus der Überladungsauflösung. Aufrufer fangen das Ausnahmeobjekt ab, um den enthaltenen Fehlercode zu analysieren und Fehlerbehandlungsmaßnahmen einzuleiten.
Kontext
Die Klasse ara::com::ComException dient im Modul com der AUTOSAR Adaptive Platform als spezialisierte Ausnahmeklasse zur Signalisierung von Fehlern bei Aufrufen der Kommunikations-API [SWS_CM_11327]. Sie leitet öffentlich von der Basisklasse ara::core::Exception ab und ist als final deklariert. Dies verdeutlicht die direkte Integration in die übergreifende Fehlerbehandlungsarchitektur der Adaptive Platform. Durch die Markierung als final dürfte die Klasse als versiegelter Ausnahmetyp konzipiert sein, der nicht für eine weitere Ableitungshierarchie vorgesehen ist. Frage Q-2454b5b73295287b (offen)
Die primäre Aufgabe von ara::com::ComException besteht darin, einen aufgetretenen Fehlerzustand in Form eines ara::core::ErrorCode zu kapseln und über den C++-Ausnahmemechanismus an aufrufende Schichten zu übermitteln [SWS_CM_11328]. Die Deklaration und Definition wird über den Header #include "ara/com/com_error_domain.h" bereitgestellt [SWS_CM_11328]. Als zentrale Interaktionspartner fungieren dabei die nutzende Anwendungssoftware, die internen Service- und API-Funktionen der Kommunikationsverwaltung sowie die Typen der Fehlerdomäne ara::core::ErrorCode.
Lebenszyklus
Der Lebenszyklus eines ara::com::ComException-Objekts beginnt in der Implementierung einer API-Funktion der Kommunikationsverwaltung, sobald eine Operation fehlschlägt und die Ausnahme instanziiert und ausgelöst wird AUTOSAR_AP_SWS_CommunicationManagement §8.12.5 „Class: ComException“. Die Erzeugung erfolgt über den expliziten Konstruktor, welcher das auslösende ara::core::ErrorCode-Objekt übernimmt [SWS_CM_11328].
Dieser Konstruktor ist mit noexcept deklariert und besitzt die Eigenschaft exception safe[SWS_CM_11328]. Dadurch ist garantiert, dass während der Konstruktion des Ausnahmeobjekts selbst keine weiteren Ausnahmen auftreten können. Nach dem Wurf per throw wird das Objekt im Rahmen des Stack-Unwindings transportiert, bis es in einem passenden catch-Block der aufrufenden Schicht gebunden wird. Bezüglich der Besitzverhältnisse wird die Instanz nach dem Verlassen des behandelnden Blocks automatisch auf dem Stack zerstört. Interne Zustandsübergänge im Sinne einer Zustandsmaschine weist die Klasse nicht auf; ihr Zustand bleibt nach der Initialisierung mit dem Fehlercode unveränderlich.
Nutzungspfad
Der typische Nutzungspfad beschreibt den Ablauf von Fehlererkennung, Ausnahmeauslösung und anschließender Behandlung:
Eine Anwendungsfunktion ruft eine Operation der ara::com-Schnittstelle auf.
Die Anwendung fängt die Ausnahme in einem passenden Block ab. Das Abfangen erfolgt anwendungsseitig vermutlich per konstanter Referenz (const ara::com::ComException&), um Kopieroperationen zu vermeiden. Frage Q-5270e026eeac8be7 (offen)
Über die Schnittstelle der Basisklasse greift der Aufrufer auf den enthaltenen ara::core::ErrorCode zu und führt Diagnose- oder Kompensationsschritte durch [SWS_CM_11328].
Im Kontext der Fehlerbehandlung und Toolchain-Konfiguration gelten folgende Bedingungen und Randfälle:
Deaktivierte C++-Ausnahmen: Wenn C++-Ausnahmen in der Compiler-Toolchain deaktiviert sind, nehmen API-Funktionen, die ara::com::ComException erzeugen und werfen, gemäß [SWS_CORE_10304] nicht an der Überladungsauflösung teil AUTOSAR_AP_SWS_CommunicationManagement §8.12.5 „Class: ComException“. In diesem Fall greift die fehlerbehandelnde Software auf alternative Rückgabemechanismen zurück.
Konstruktor-Typsicherheit: Da der Konstruktor als explicit deklariert ist, werden implizite Typkonvertierungen bei der Übergabe des ara::core::ErrorCode unterbunden [SWS_CM_11328].
Hierarchisches Abfangen: Da ara::com::ComException von ara::core::Exception erbt, können Aufrufer Ausnahmen entweder spezifisch als ara::com::ComException oder allgemein über Handler für die Basisklasse behandeln.
Dieser Leitfaden basiert auf der Spezifikation AUTOSAR Adaptive R25-11. Alle Angaben und Verweise stützen sich ausschließlich auf die bereitgestellten Spezifikationsauszüge.
UML-Klassendiagramm
Hohle Dreieckspfeile = Vererbung (zeigt zur Basisklasse); Klicken öffnet die jeweilige Klassenseite.
gemini-3.8-flash-medium· 2026-10-13