DEENESPTFRRUARHIKOZHNL

class ara::diag::DiagUdsNrcException

[SWS_DM_00527] Upstream: RS_AP_00119

class DiagUdsNrcException :              public ara::core::Exception {...};

Exception type thrown by Diag classes.

Header-Datei#include "ara/diag/diag_uds_nrc_error_domain.h"
Forwarding-Header#include "ara/diag/diag_fwd.h"
Scopenamespace ara::diag
Basisklasse(n)ara::core::Exception

User GuideKI-GENERIERT

Dient als threadsichere Ausnahme zur Signalisierung und Weitergabe von UDS-NRC-Fehlern in Diagnoseklassen.
KI-GENERIERT ungeprüft Modell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: 6ef167bbc303 Herkunft Offene Fragen (2)
KI-generiertgemini-3.8-flash-medium · 2026-10-13

Dient als threadsichere Ausnahme zur Signalisierung und Weitergabe von UDS-NRC-Fehlern in Diagnoseklassen.

Die Klasse ara::diag::DiagUdsNrcException dient als standardisierte Ausnahme zur Signalisierung von UDS-NRC-Fehlern durch Diagnoseklassen der AUTOSAR Adaptive Platform (AUTOSAR_AP_SWS_Diagnostics §8.12.4 „Class: DiagUdsNrcException“). Bei Auftreten einer entsprechenden Fehlerbedingung wird sie mit einem ara::core::ErrorCode instanziiert, geworfen und von der aufrufenden Anwendung zur Fehlerbehandlung abgefangen. Als wesentliche Randbedingung garantiert ihr Konstruktor nach [SWS_DM_00528] vollständige Ausnahmesicherheit (noexcept) sowie Threadsicherheit, wodurch eine verlässliche Objekterzeugung selbst in nebenläufigen Kontexten sichergestellt ist.

Kontext

Die Klasse ara::diag::DiagUdsNrcException bildet in der AUTOSAR Adaptive Platform den zentralen Ausnahmetyp für Diagnoseklassen des Moduls diag (AUTOSAR_AP_SWS_Diagnostics §8.12.4 „Class: DiagUdsNrcException“). Gemäß der Spezifikation [SWS_DM_00527] definiert sie eine standardisierte C++-Ausnahmeschnittstelle, die direkt von der Basisausnahmeklasse ara::core::Exception erbt. Ihre primäre Verantwortung besteht darin, Fehlerbedingungen aus dem Diagnosekontext, insbesondere negative Antwortcodes (Negative Response Codes, NRC) des UDS-Protokolls, als typisierte Ausnahmen über die Programmierschnittstelle zu transportieren. Die Klasse interagiert dabei eng mit ara::core::ErrorCode, welcher den konkreten Fehlercode kapselt, sowie mit den aufrufenden Anwendungsschichten, die Diagnoseanfragen stellen und etwaige Fehler abfangen müssen ([SWS_DM_00528]). Durch die Deklaration im Header ara/diag/diag_uds_nrc_error_domain.h ist die Ausnahme unmittelbar mit der zugehörigen UDS-NRC-Fehlerdomäne verknüpft ([SWS_DM_00528]).
diag_uds_nrc_context diag_classes ara::diag-Klassen nrc_exception ara::diag::DiagUdsNrcException diag_classes->nrc_exception erzeugt und wirft app Anwendungssoftware nrc_exception->app überträgt Fehler an error_code ara::core::ErrorCode error_code->nrc_exception initialisiert

Kontextdiagramm: Einbindung von DiagUdsNrcException im Zusammenspiel zwischen Fehlercode, Diagnoseklassen und Anwendungssoftware. Quellen: [SWS_DM_00527], [SWS_DM_00528], AUTOSAR_AP_SWS_Diagnostics §8.12.4 „Class: DiagUdsNrcException“

Lebenszyklus

Der Lebenszyklus einer Instanz von ara::diag::DiagUdsNrcException beginnt mit ihrer expliziten Instanziierung durch eine Diagnoseklasse oder eine interne Fehlerbehandlungsroutine. Gemäß [SWS_DM_00528] verfügt die Klasse über einen Konstruktor explicit DiagUdsNrcException(ara::core::ErrorCode err) noexcept;, welcher den zugrundeliegenden Fehlercode als Parameter err entgegennimmt. Dieser Konstruktor ist ausdrücklich als ausnahmesicher (exception safe) und nicht-werfend (noexcept) definiert ([SWS_DM_00528]), wodurch garantiert wird, dass bei der Objekterzeugung im Fehlerpfad keine sekundären Ausnahmen auftreten können. Zudem ist die Erzeugung gemäß [SWS_DM_00528] als threadsicher (thread-safe) klassifiziert. Nach der Erzeugung wird die Ausnahmeinstanz typischerweise per Wert über das C++-Laufzeitsystem geworfen. Der Besitz des Objekts verbleibt während des Stack-Unwindings bei der Laufzeitumgebung, bis die Ausnahme in einem entsprechenden catch-Block gebunden und ausgewertet wird. Mit dem Verlassen des Ausnahmebehandlungsblocks endet der Lebenszyklus des Objekts durch reguläre Zerstörung.

Nutzungspfad

Der typische Nutzungspfad umfasst die Erkennung eines UDS-NRC-Fehlers, die Erzeugung der Ausnahme und deren anschließende Auswertung durch die Anwendung:
  1. Eine Anwendungskomponente ruft eine Diagnosefunktion oder Service-Schnittstelle einer ara::diag-Klasse auf.
  2. Die Diagnoseklasse stellt bei der Verarbeitung fest, dass die Anfrage nicht erfolgreich bedient werden kann und ein UDS-NRC vorliegt, woraufhin sie einen entsprechenden ara::core::ErrorCode erzeugt.
  3. Unter Übergabe dieses Fehlercodes wird die Ausnahme ara::diag::DiagUdsNrcException über ihren Konstruktor instanziiert ([SWS_DM_00528]).
  4. Die Diagnoseklasse wirft das Ausnahmeobjekt aus dem Ausführungskontext heraus (AUTOSAR_AP_SWS_Diagnostics §8.12.4 „Class: DiagUdsNrcException“).
  5. Die aufrufende Anwendung fängt die Ausnahme entweder typgenau als ara::diag::DiagUdsNrcException ([SWS_DM_00527]) oder polymorph über die Basisklasse ara::core::Exception ab und greift auf die Fehlerinformationen zu.
Ablauf der Ausnahmebehandlung mit DiagUdsNrcExceptionAnwendungDiag-KlasseDiagUdsNrcExceptionDiagnosefunktion ausführenUDS-NRC-Bedingung erkannt, ErrorCode erzeugtDiagUdsNrcException(err)throw DiagUdsNrcExceptioncatch und Fehler auswerten

Sequenzdiagramm: Typische Erzeugung, Wurf- und Fangsequenz der DiagUdsNrcException. Quellen: [SWS_DM_00527], [SWS_DM_00528], AUTOSAR_AP_SWS_Diagnostics §8.12.4 „Class: DiagUdsNrcException“

Fehlerszenarien

Da ara::diag::DiagUdsNrcException selbst ein Vehikel zur Fehlersignalisierung ist, beziehen sich Fehlerszenarien vor allem auf Robustheit und Nebenläufigkeit bei der Ausnahmeerzeugung:
  • Robuste Objekterzeugung: Durch die Spezifikation als noexcept und exception safe ([SWS_DM_00528]) ist ausgeschlossen, dass bei der Konstruktion eine sekundäre Ausnahme geworfen wird. Dies verhindert fatale Laufzeitabbrüche wie std::terminate in kritischen Fehlerbehandlungspfaden.
  • Gültigkeit des Fehlercodes: Als Vorbedingung für die Instanziierung muss ein valider ara::core::ErrorCode bereitstehen ([SWS_DM_00528]). Dieser entstammt typischerweise der durch ara/diag/diag_uds_nrc_error_domain.h definierten Fehlerdomäne.
  • Parallele Diagnoseverarbeitung: Da der Konstruktor als thread-safe spezifiziert ist ([SWS_DM_00528]), dürfen mehrere Threads nebenläufig Diagnoseausnahmen erzeugen, ohne dass Race Conditions bei der Initialisierung des Ausnahmeobjekts auftreten.

Dieser Leitfaden wurde durch ein KI-System auf Basis der AUTOSAR-Spezifikation R25-11 generiert.

UML-Klassendiagramm

Hohle Dreieckspfeile = Vererbung (zeigt zur Basisklasse); Klicken öffnet die jeweilige Klassenseite.

G nara__diag__DiagUdsNrcException343 DiagUdsNrcException + DiagUdsNrcException() nara__core__Exception792 Exception nara__diag__DiagUdsNrcException343->nara__core__Exception792 nstd__exception10 std::exception nara__core__Exception792->nstd__exception10

Konstruktoren und Destruktor

Construct a new DiagException from an ErrorCode.

explicit DiagUdsNrcException (ara::core::ErrorCode err) noexcept;

Dokumentation der Methoden

function DiagUdsNrcException [SWS_DM_00528] Upstream: RS_AP_00119

explicit DiagUdsNrcException (ara::core::ErrorCode err) noexcept;

Construct a new DiagException from an ErrorCode.

Header-Datei#include "ara/diag/diag_uds_nrc_error_domain.h"
Scopeclass ara::diag::DiagUdsNrcException
Exception-Sicherheitexception safe
Thread-Sicherheitthread-safe

Parameter (in)

ParameterBeschreibung
errthe ErrorCode

Request a governed re-review of this record. The record is not changed immediately.

Record
AUTOSAR/AP/record/SWS_DM_00528
Status
valid/unmigrated
Version
AUTOSAR/AP/record/SWS_DM_00528@rel:R25-11#d0877d83
Content hash
d0877d83
Source
https://www.autosar.org/fileadmin/standards/R25-11/AP/AUTOSAR_AP_SWS_Diagnostics.pdf#nameddest=SWS_DM_00528
Status: valid/unmigrated Version: rel:R25-11#55ae2ae1 Versionshistorie & Revisions (1 transition, 7 revision)
Current State
valid/unmigrated
Reason
mechanically backfilled by migriere_status_backfill.py -- no per-field curation history exists yet for this record
Campaign
2026-08-13-status-backfill
Active Version
AUTOSAR/AP/record/SWS_DM_00528@rel:R25-11#55ae2ae1
Point-in-Time History:
Recorded Revisions (7):
  • R25-11rel:R25-11#d0877d832026-09-30
  • R20-11rel:R20-11#cfe41a2e2026-10-14
  • R21-11rel:R21-11#cfe41a2e2026-10-14
  • R22-11rel:R22-11#b5842e552026-10-14
  • R23-11rel:R23-11#ccbb9a702026-10-14
  • R24-11rel:R24-11#55ae2ae12026-10-14
  • R25-11rel:R25-11#55ae2ae12026-10-14 active
DateActorTransitionReason / RationaleCampaign
2026-08-13toolnone → valid/unmigratedmechanically backfilled by migriere_status_backfill.py -- no per-field curation history exists yet for this record2026-08-13-status-backfill