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

用户指南人工智能生成

用作线程安全的异常,以在诊断类中指示和传递 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],它定义了一个标准化的 C++ 异常接口,该接口直接继承自基类异常类 ara::core::Exception。其主要职责在于将来自诊断上下文的错误条件,尤其是 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],该类具有一个构造函数 explicit DiagUdsNrcException(ara::core::ErrorCode err) noexcept;,其接收底层错误代码作为参数 err。该构造函数被明确定义为异常安全(exception safe)且不抛出异常(noexcept)([SWS_DM_00528]),从而确保在错误路径中的对象创建期间不会发生二次异常。此外,根据 [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]),排除了在构造过程中抛出次级异常的可能性。这可以防止在关键错误处理路径中发生致命的运行时中止,如 std::terminate。
  • 错误代码的有效性:作为实例化的前置条件,必须有一个有效的 ara::core::ErrorCode 可供使用([SWS_DM_00528])。该错误代码通常来源于由 ara/diag/diag_uds_nrc_error_domain.h 定义的错误域。
  • 并行诊断处理:由于构造函数被指定为 thread-safe([SWS_DM_00528]),多个线程可以并发生成诊断异常,而在异常对象的初始化过程中不会出现竞态条件。

本指南由 AI 系统基于 AUTOSAR 规范 R25-11 生成。

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#f6248b80
Content hash
f6248b80
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