Kapselt Fehlercodes des Execution Managements als C++-Ausnahme zur synchronen Fehlerbehandlung.
KI-GENERIERTungeprüftModell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: e102ca6cc8edHerkunftOffene Fragen (3)
KI-generiertgemini-3.8-flash-medium · 2026-10-13
Kapselt Fehlercodes des Execution Managements als C++-Ausnahme zur synchronen Fehlerbehandlung.
Die Klasse ara::exec::ExecException dient als finale Ausnahmeklasse des Execution Managements zur Kapselung und Signalisierung modulspezifischer Fehler über den C++-Ausnahmemechanismus. Instanzen werden im Fehlerfall unter Angabe eines ara::core::ErrorCode über den threadsicheren Konstruktor erzeugt und geworfen, woraufhin aufrufende Stellen sie abfangen und analysieren [SWS_EM_02283]. Als fundamentale Randbedingung ist die Konstruktion als noexcept spezifiziert, wodurch die Objekterstellung garantiert ausnahmesicher bleibt [SWS_EM_02283]. Unbehandelte Ausnahmen müssen vermieden werden, da sie zur Systemterminierung führen.
Kontext
Die Klasse ara::exec::ExecException stellt die zentrale Ausnahmeklasse des Moduls Execution Management (exec) innerhalb der AUTOSAR Adaptive Platform dar. Gemäß ihrer Spezifikation dient sie als Kapselung für Ausnahmen, die durch das Execution Management ausgelöst werden. Die Klassendeklaration definiert sie als final mit öffentlicher Ableitung von der Standard-Basisausnahmeklasse ara::core::Exception, wodurch sie sich nahtlos in das einheitliche Ausnahme- und Fehlerbehandlungskonzept der Adaptive Platform einbettet. Durch den Bezeichner final ist eine weitere Spezialisierung oder Unterklassifizierung ausgeschlossen.
Deklariert wird die Ausnahmeklasse im Header #include "ara/exec/exec_error_domain.h"[SWS_EM_02283]. Die primäre funktionale Verantwortung von ara::exec::ExecException liegt im Transport von modulspezifischen Fehlerzuständen über den C++-Ausnahmemechanismus. Interpretation: Das Werfen dieser Ausnahme dürfte vor allem in Ausführungsumgebungen zum Tragen kommen, in denen Fehlerzustände des Execution Managements nicht rein über wertbasierte Fehlertypen propagiert werden, sondern ein synchroner Kontrollflussabbruch über C++-Ausnahmen erforderlich ist. Frage Q-8faec8c282524965 (offen)
Lebenszyklus
Der Lebenszyklus einer Instanz von ara::exec::ExecException beginnt mit der expliziten Konstruktion unter Übergabe eines Fehlercodes. Der Konstruktor explicit ExecException(ara::core::ErrorCode errorCode) noexcept erzeugt ein neues Ausnahmeobjekt, welches den übergebenen Fehlercode kapselt [SWS_EM_02283]. Die Kennzeichnung als noexcept stellt sicher, dass die Objekterzeugung selbst im Kontext einer bereits bestehenden Fehlerbehandlung garantiert fehlschlagsfrei bleibt und keine kaskadierenden Folgefehler auslöst [SWS_EM_02283].
In Bezug auf die Ausführungssicherheit ist die Konstruktion explizit als ausnahmesicher („exception safe“) und threadsicher („thread-safe“) klassifiziert [SWS_EM_02283]. Dies ermöglicht die zuverlässige Erzeugung von Ausnahmeinstanzen über verschiedene Threads hinweg, ohne dass zusätzliche Synchronisationsmechanismen erforderlich sind. Nach dem Auslösen via throw geht das Objekt in die Verwaltung des C++-Laufzeitsystems über. Interpretation: Die Zerstörung des Ausnahmeobjekts erfolgt automatisch nach Verlassen des behandelnden catch-Blocks im Zuge des regulären Stack-Unwindings, weshalb keine explizite Lebenszyklusverwaltung durch den Aufrufer notwendig ist. Frage Q-ec22ad5f177555aa (offen)
Nutzungspfad
Ein typischer Nutzungspfad von ara::exec::ExecException umfasst die Instanziierung im Fehlerfall innerhalb des Execution Managements sowie das kontrollierte Abfangen im aufrufenden Anwendungskontext:
Fehleridentifikation und Instanziierung: Tritt im Execution Management eine Ausnahmebedingung auf, wird die Ursache in einem ara::core::ErrorCode der zugehörigen Fehlerdomäne abgebildet und zur expliziten Initialisierung einer ara::exec::ExecException herangezogen [SWS_EM_02283].
Signalisierung: Die initialisierte Ausnahmeinstanz wird geworfen, wodurch der reguläre Ausführungspfad unterbrochen und die Stack-Abwicklung eingeleitet wird.
Abfangen: Aufrufende Komponenten fangen das Ausnahmeobjekt entweder gezielt als const ara::exec::ExecException& oder allgemeiner über die polymorphe Basisklasse const ara::core::Exception& ab.
Auswertung: Interpretation: Da das Objekt mit einem ara::core::ErrorCode konstruiert wurde [SWS_EM_02283] und von ara::core::Exception erbt, dürfte der Empfänger den enthaltenen Fehlercode über Schnittstellen der Basisklasse extrahieren, um modulspezifische Wiederherstellungs- oder Protokollierungsmaßnahmen durchzuführen. Frage Q-d4671c34f5aab6f9 (offen)
Fehlerszenarien
Als spezialisierte Ausnahmeklasse ist ara::exec::ExecException darauf ausgelegt, bestehende Fehlersituationen abzubilden, ohne bei ihrer eigenen Verwendung neue Fehler zu induzieren. Für die Erzeugung verlangt der Konstruktor die Übergabe eines ara::core::ErrorCode[SWS_EM_02283]. Da der Konstruktor als noexcept deklariert ist, sind Vorbedingungsfehler bei der Instanziierung ausgeschlossen, die die Erzeugung des Ausnahmeobjekts behindern könnten [SWS_EM_02283].
Ein wesentliches Fehlerszenario auf Systemebene liegt im unvollständigen Abfangen geworfener Ausnahmen. Bleibt eine von ara::exec::ExecException ausgelöste Ausnahme entlang der Aufrufhierarchie unbehandelt, greift die standardmäßige C++-Laufzeitbehandlung, was typischerweise in den Aufruf von std::terminate und damit in den vorzeitigen Prozessabbruch mündet. Interagierende Software-Komponenten müssen daher sicherstellen, dass Aufrufe an potenziell werfende Funktionen des Execution Managements durch adäquate try-catch-Blöcke abgesichert sind.
Dieser Leitfaden wurde durch eine KI auf Basis der Spezifikation AUTOSAR Adaptive Platform R25-11 generiert.
UML-Klassendiagramm
Hohle Dreieckspfeile = Vererbung (zeigt zur Basisklasse); Klicken öffnet die jeweilige Klassenseite.
gemini-3.8-flash-medium· 2026-10-13