Dient der Fehlersignalisierung über Ausnahmen mit einem Fehlercode beim Bereitstellen von Diagnose-Diensten.
KI-GENERIERTungeprüftModell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: 3b24259852fbHerkunftOffene Fragen (3)
KI-generiertgemini-3.8-flash-medium · 2026-10-13
Dient der Fehlersignalisierung über Ausnahmen mit einem Fehlercode beim Bereitstellen von Diagnose-Diensten.
Die Klasse ara::diag::DiagOfferException dient als spezifischer C++-Ausnahmetyp, der von Diagnose-Klassen der AUTOSAR Adaptive Platform zur Signalisierung von Fehlern geworfen wird ([SWS_DM_00985]). Sie leitet von ara::core::Exception ab und wird über einen noexcept-Konstruktor unter Angabe eines ara::core::ErrorCode thread-sicher instanziiert ([SWS_DM_00986]). Die Ausnahme dürfte primär beim fehlschlagenden Anbieten von Diagnose-Diensten auftreten und muss von der aufrufenden Anwendung abgefangen werden, um einen unkontrollierten Prozessabbruch zu verhindern. Frage (offen)
Kontext
Die Klasse ara::diag::DiagOfferException ist ein zentraler Ausnahmetyp des Diagnose-Moduls innerhalb der AUTOSAR Adaptive Platform ([SWS_DM_00985], SWS Diagnostics §8.11.6 „Class: DiagOfferException“). Gemäß ihrer Spezifikation handelt es sich um eine Ausnahme, die von Diagnose-Klassen geworfen wird ("Exception type thrown by Diag classes"). Die Klasse leitet öffentlich von der Basisklasse ara::core::Exception ab und ist über den Header ara/diag/diag_error_domain.h in Anwendungen einzubinden ([SWS_DM_00986]).
Zu den primären Interaktionspartnern zählen funktionale Klassen des Diagnose-Managements, die zugrundeliegende Fehlerarchitektur von AUTOSAR Adaptive (repräsentiert durch ara::core::ErrorCode) sowie die anwendende Software, welche Diagnose-Dienste anbietet. Der Klassenname legt nahe, dass diese Ausnahme vermutlich dann zum Einsatz kommt, wenn das Anbieten oder Registrieren von Diagnose-Diensten durch entsprechende Diag-Klassen fehlschlägt (Interpretation). Frage Q-47046201c9fd38c3 (offen)
Lebenszyklus
Die Instanziierung von ara::diag::DiagOfferException erfolgt über ihren einzigen spezifizierten Konstruktor explicit DiagOfferException(ara::core::ErrorCode err) noexcept ([SWS_DM_00986], SWS Diagnostics §8.11.6.1.1.1 „DiagOfferException“). Dabei wird die Ausnahme direkt an einen konkreten Fehlercode gebunden. Da der Konstruktor als noexcept deklariert ist, ist garantiert, dass bei der Erzeugung des Ausnahmeobjekts selbst keine weiteren Fehler oder rekursiven Ausnahmen auftreten ([SWS_DM_00986]).
Hinsichtlich des Lebenszyklus unterliegt die Klasse den üblichen Mechanismen der C++-Ausnahmebehandlung: Sie wird auf dem Exception-Speicher der Laufzeitumgebung angelegt, über den Aufrufstapel transportiert und nach Abarbeitung des behandelnden catch-Blocks automatisch freigegeben. Gemäß Spezifikation ist die Konstruktion thread-safe und exception-safe ([SWS_DM_00986]). Das Ausnahmeobjekt besitzt nach seiner Erzeugung keine komplexen internen Zustandswechsel; es dürfte als unveränderliche Transportschale für den übergebenen Fehlercode fungieren (Interpretation). Frage Q-09c6e0ad610717e9 (offen)
Nutzungspfad
Der typische Ablauf bei der Verwendung von ara::diag::DiagOfferException gliedert sich in folgende Phasen:
Eine Anwendung ruft eine Methode einer Diagnose-Klasse auf, um einen Diagnose-Dienst oder Port bereitzustellen (Offer-Operation).
Die Diagnose-Klasse stellt während der Initialisierung oder Registrierung eine Fehlerbedingung fest und instanziiert einen passenden ara::core::ErrorCode.
Die Diagnose-Klasse konstruiert eine Instanz von ara::diag::DiagOfferException unter Übergabe dieses Fehlercodes ([SWS_DM_00986]) und wirft diese Ausnahme.
Die aufrufende Anwendungssoftware fängt die Ausnahme im Rahmen eines try-catch-Blocks ab.
Der Aufrufer extrahiert den Fehlercode aus der Ausnahme und stößt geeignete Ausfall- oder Wiederholungsstrategien an.
Sequenzdiagramm: Typischer Ablauf bei der Signalisierung und Behandlung eines Fehlers über DiagOfferException. Quellen: [SWS_DM_00985], [SWS_DM_00986].
Fehlerszenarien
ara::diag::DiagOfferException dient selbst als Signalisierungsmechanismus für Fehlersituationen. Als Vorbedingung für die Instanziierung muss der aufrufenden Instanz ein gültiger ara::core::ErrorCode vorliegen ([SWS_DM_00986]). Da der Konstruktor als noexcept definiert ist, führt die Instanziierung unter keinen Umständen zu sekundären Ausnahmen ([SWS_DM_00986]).
Wird eine geworfene DiagOfferException von der anwendenden Software nicht abgefangen, führt dies standardmäßig zum Aufruf von std::terminate und somit zum unkontrollierten Absturz des Prozesses. Durch die Vererbung von ara::core::Exception ist es vermutlich vorgesehen, dass neben dem spezifischen Abfangen von ara::diag::DiagOfferException auch ein generischer Handler für ara::core::Exception greifen kann (Interpretation), um robuste Fehlertoleranz auf Prozessebene zu gewährleisten. Frage Q-d0cf602a077c4dae (offen)
Dieser Leitfaden basiert auf der Spezifikation AUTOSAR Adaptive R25-11 (Modul diag) und wurde für autodocs automatisiert generiert.
UML-Klassendiagramm
Hohle Dreieckspfeile = Vererbung (zeigt zur Basisklasse); Klicken öffnet die jeweilige Klassenseite.
gemini-3.8-flash-medium· 2026-10-13