Dient dem Kapseln und Weiterleiten von Diagnose-Fehlercodes als C++-Ausnahme an übergeordnete Funktionsaufrufer.
Kontext
Die Klasse ara::diag::DiagException bildet den zentralen Ausnahmetyp für das Funktionscluster der AUTOSAR Adaptive Platform Diagnostics (SWS Diagnostics §8.11.4 „Class: DiagException“, [SWS_DM_00515]). Sie leitet sich direkt von der Basisklasse ara::core::Exception ab und ist dafür verantwortlich, Fehlerzustände, die innerhalb der Diagnose-Klassen auftreten, im Ausnahmefall an den Aufrufer zu melden. Primäre Interaktionspartner sind die bereitstellenden Diagnose-Klassen innerhalb von ara::diag, welche Ausnahmesituationen signalisieren, sowie die nutzende Anwendungssoftware, die Diagnose-Operationen anfordert und potenzielle Ausnahmen abfängt. Durch die Deklaration in der Header-Datei ara/diag/diag_error_domain.h steht die Ausnahmeklasse in unmittelbarer Verbindung mit den Diagnose-spezifischen Fehlerdomänen ([SWS_DM_00516]).
Lebenszyklus
Die Instanziierung von ara::diag::DiagException erfolgt durch Übergabe eines Fehlercodes vom Typ ara::core::ErrorCode an den Konstruktor ([SWS_DM_00516]). Dieser Konstruktor ist als explicit definiert, wodurch implizite Typkonvertierungen aus Fehlercodes unterbunden werden. Zudem ist die Erzeugung als noexcept deklariert, was die Ausnahme-Sicherheit („exception safe“) bei der Objekterzeugung garantiert und verhindert, dass während des Auslösens eines Ausnahmezustands eine weitere Ausnahme geworfen wird ([SWS_DM_00516]). Für den Aufruf des Konstruktors wird Thread-Sicherheit („thread-safe“) garantiert ([SWS_DM_00516]). Hinsichtlich des weiteren Lebenszyklus existiert das Exception-Objekt für die Dauer des Stack-Unwinding-Prozesses bis zum Abschluss des zugehörigen catch-Blocks (Interpretation: Die Besitzverhältnisse und die Zerstörung des Ausnahmeobjekts folgen den standardisierten Mechanismen der C++-Laufzeitumgebung). Frage Q-ae485b4ea411b187 (offen)
Nutzungspfad
Der reguläre Einsatzpfad von ara::diag::DiagException erstreckt sich von der Erkennung einer Fehlersituation im Diagnose-Subsystem bis zur Auswertung durch die Anwendungsebene. Der folgende Ablauf verdeutlicht die Interaktion der beteiligten Komponenten:
Sequenzdiagramm: Typischer Ablauf beim Auftreten, Auslösen und Behandeln einer DiagException. Quellen: [SWS_DM_00515], [SWS_DM_00516].
Die Anwendung stößt zunächst eine Operation an einer Funktionsklasse des Moduls ara::diag an. Tritt während der Bearbeitung eine Bedingung ein, die einen regulären Rückgabepfad ausschließt, erzeugt die Diagnose-Klasse eine Instanz von ara::diag::DiagException unter Angabe des spezifischen ara::core::ErrorCode ([SWS_DM_00516]). Diese Ausnahme wird über den normalen C++-Ausnahmemechanismus geworfen. Die aufrufende Anwendungsinstanz fängt das Objekt in einem typisierten Ausnahmebehandler ab, um geeignete Wiederherstellungs- oder Protokollierungsmaßnahmen einzuleiten.
Fehlerszenarien
Als Fehlersignalisierungsklasse bedient ara::diag::DiagException vorrangig die Weitergabe diagnostischer Fehlerzustände. Vorbedingung für die erfolgreiche Konstruktion ist die Bereitstellung eines initialisierten Parameters err vom Typ ara::core::ErrorCode ([SWS_DM_00516]). Die Ausnahmesicherheit des Konstruktors stellt sicher, dass selbst bei ressourcenkritischen Situationen keine Sekundärausnahmen im Konstruktionspfad ausgelöst werden ([SWS_DM_00516]). Nach erfolgreicher Instanziierung kapselt das Objekt den übergebenen Fehlercode vollständig (Interpretation: Der konkrete Diagnose-Fehlercode dürfte über die geerbten Basismechanismen von ara::core::Exception durch die abfangende Anwendungslogik inspiziert werden). Frage Q-d20a61b72951321b (offen)
Dieser Leitfaden wurde von einer KI auf Basis der Spezifikation AUTOSAR AP R25-11 kuratiert.
gemini-3.8-flash-medium· 2026-10-13