DEENESPTFRRUARHIKOZHNL

클래스 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

사용자 가이드AI 생성

진단 클래스에서 UDS NRC 오류를 신호하고 전달하기 위한 스레드 안전 예외 역할을 합니다.
AI 생성 미검증 모델: gemini-3.8-flash-medium · 노력: medium · 온도: 제어 불가 · 프롬프트: 6ef167bbc303 출처 열린 질문 (2)
독일어 가이드에서 번역됨gemini-3.8-flash-low · 2026-10-13 · 독일어 원문

진단 클래스에서 UDS NRC 오류를 신호하고 전달하기 위한 스레드 안전 예외 역할을 합니다.

클래스 ara::diag::DiagUdsNrcException은 AUTOSAR Adaptive Platform의 진단 클래스에 의한 UDS NRC 오류 신호 전달을 위한 표준화된 예외 역할을 합니다(AUTOSAR_AP_SWS_Diagnostics §8.12.4 “Class: DiagUdsNrcException”). 해당 오류 조건이 발생하면 ara::core::ErrorCode로 인스턴스화되어 던져지며, 오류 처리를 위해 호출 애플리케이션에 의해 포착됩니다. 중요한 제약 조건으로 [SWS_DM_00528]에 따른 생성자는 완전한 예외 안전성(noexcept) 및 스레드 안전성을 보장하여 동시성 컨텍스트에서도 신뢰할 수 있는 객체 생성을 보장합니다.

컨텍스트

클래스 ara::diag::DiagUdsNrcException은 AUTOSAR Adaptive Platform에서 모듈 diag의 진단 클래스를 위한 핵심 예외 타입을 형성합니다(AUTOSAR_AP_SWS_Diagnostics §8.12.4 “Class: DiagUdsNrcException”). 사양 [SWS_DM_00527]에 따르면 기본 예외 클래스 ara::core::Exception에서 직접 상속되는 표준화된 C++ 예외 인터페이스를 정의합니다. 주요 책임은 진단 컨텍스트의 오류 조건, 특히 UDS 프로토콜의 부정 응답 코드(Negative Response Codes, NRC)를 프로그래밍 인터페이스를 통해 형식화된 예외로 전달하는 것입니다. 이 클래스는 구체적인 오류 코드를 캡슐화하는 ara::core::ErrorCode 및 진단 요청을 수행하고 발생 가능한 오류를 포착해야 하는 호출 애플리케이션 계층과 긴밀하게 상호작용합니다([SWS_DM_00528]). 헤더 ara/diag/diag_uds_nrc_error_domain.h에 선언됨으로써 이 예외는 연관된 UDS NRC 오류 도메인과 직접 연결됩니다([SWS_DM_00528]).
diag_uds_nrc_context diag_classes ara::diag 클래스 nrc_exception ara::diag::DiagUdsNrcException diag_classes->nrc_exception 생성 및 발생시킴 app Anwendungssoftware nrc_exception->app 다음에 오류 전달: error_code ara::core::ErrorCode error_code->nrc_exception initialisiert

컨텍스트 다이어그램: 오류 코드, 진단 클래스 및 애플리케이션 소프트웨어 간의 상호작용에서 DiagUdsNrcException의 통합. 출처: [SWS_DM_00527], [SWS_DM_00528], AUTOSAR_AP_SWS_Diagnostics §8.12.4 “Class: DiagUdsNrcException”

수명 주기

ara::diag::DiagUdsNrcException 인스턴스의 수명 주기는 진단 클래스 또는 내부 오류 처리 루틴에 의한 명시적 인스턴스화로 시작됩니다. [SWS_DM_00528]에 따르면 클래스에는 기본 오류 코드를 매개변수 err으로 수신하는 생성자 explicit DiagUdsNrcException(ara::core::ErrorCode err) noexcept;가 있습니다. 이 생성자는 명시적으로 예외 안전(exception safe) 및 비-발생(noexcept)으로 정의되어 있어([SWS_DM_00528]), 오류 경로에서 객체 생성 시 2차 예외가 발생할 수 없도록 보장합니다. 또한 [SWS_DM_00528]에 따라 생성은 스레드 안전(thread-safe)으로 분류됩니다. 생성 후 예외 인스턴스는 일반적으로 C++ 런타임 시스템을 통해 값으로 던져집니다. 객체의 소유권은 스택 해제 동안 런타임 환경에 유지되며, 해당 catch 블록에서 예외가 바인딩되고 평가될 때까지 지속됩니다. 예외 처리 블록을 벗어나면 정기적인 소멸을 통해 객체의 수명 주기가 종료됩니다.

사용 경로

일반적인 사용 경로에는 UDS NRC 오류 감지, 예외 생성 및 애플리케이션에 의한 후속 평가가 포함됩니다.
  1. 애플리케이션 컴포넌트가 ara::diag 클래스의 진단 함수 또는 서비스 인터페이스를 호출합니다.
  2. 진단 클래스는 처리 중에 요청을 성공적으로 처리할 수 없고 UDS NRC가 존재함을 감지한 후 해당하는 ara::core::ErrorCode를 생성합니다.
  3. 이 오류 코드를 전달하여 생성자를 통해 예외 ara::diag::DiagUdsNrcException이 인스턴스화됩니다([SWS_DM_00528]).
  4. 진단 클래스가 실행 컨텍스트 외부로 예외 객체를 던집니다(AUTOSAR_AP_SWS_Diagnostics §8.12.4 “Class: DiagUdsNrcException”).
  5. 호출 애플리케이션은 예외를 형식에 맞게 ara::diag::DiagUdsNrcException([SWS_DM_00527])로 직접 포착하거나 기본 클래스 ara::core::Exception를 통해 다형성 방식으로 포착하고 오류 정보에 액세스합니다.
DiagUdsNrcException을 사용한 예외 처리 흐름애플리케이션Diag-KlasseDiagUdsNrcException진단 기능 실행UDS-NRC-Bedingung erkannt, ErrorCode erzeugtDiagUdsNrcException(err)throw DiagUdsNrcExceptioncatch 및 오류 평가

시퀀스 다이어그램: DiagUdsNrcException의 일반적인 생성, 던지기 및 포착 시퀀스. 출처: [SWS_DM_00527], [SWS_DM_00528], AUTOSAR_AP_SWS_Diagnostics §8.12.4 “Class: DiagUdsNrcException”

오류 시나리오

ara::diag::DiagUdsNrcException 자체가 오류 신호 전달 수단이므로 오류 시나리오는 주로 예외 생성 시의 견고성 및 동시성과 관련됩니다.
  • 견고한 객체 생성: noexcept 및 exception safe([SWS_DM_00528])로 지정됨으로써 생성 중에 2차 예외가 발생할 가능성이 배제됩니다. 이를 통해 중요한 오류 처리 경로에서 std::terminate와 같은 치명적인 런타임 중단을 방지합니다.
  • 오류 코드의 유효성: 인스턴스화를 위한 사전 조건으로 유효한 ara::core::ErrorCode가 준비되어 있어야 합니다([SWS_DM_00528]). 이는 일반적으로 ara/diag/diag_uds_nrc_error_domain.h로 정의된 오류 도메인에서 비롯됩니다.
  • 병렬 진단 처리: 생성자가 thread-safe로 지정되어 있으므로([SWS_DM_00528]), 예외 객체 초기화 시 경쟁 상태(race condition)가 발생하지 않고 여러 스레드가 동시에 진단 예외를 생성할 수 있습니다.

이 가이드는 AUTOSAR 사양 R25-11을 기반으로 AI 시스템에 의해 생성되었습니다.

UML 클래스 다이어그램

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

생성자 및 소멸자

Construct a new DiagException from an ErrorCode.

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

메서드 문서

함수 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#f30565cf
Content hash
f30565cf
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