DEENESPTFRRUARHIKOZHNL

类 ara::diag::DiagSovdException

[SWS_DM_01807] Upstream: RS_AP_00119

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

Exception type for SOVD thrown by Diag classes.

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

用户指南人工智能生成

将 SOVD 特定的诊断错误作为具有关联错误代码且异常安全的 Exception 指示给调用方。
AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 58783cae6416 来源 未决问题(2)
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

将 SOVD 特定的诊断错误作为具有关联错误代码且异常安全的 Exception 指示给调用方。

类 ara::diag::DiagSovdException 用作面向服务的车辆诊断(SOVD,Service-Oriented Vehicle Diagnostics)的专用异常类型,并由 diag 模块中的诊断类引发以用于错误发信 [SWS_DM_01807]。它派生自 ara::core::Exception,并在错误情况下显式使用 ara::core::ErrorCode 进行实例化,以便通过 C++ 栈展开将错误信息传递到调用上下文 [SWS_DM_01808]。作为关键约束条件,构造函数被指定为 noexcept,从而在对象创建时确保完全的异常安全性以及线程安全性。

上下文

类 ara::diag::DiagSovdException 代表 AUTOSAR Adaptive Platform 的 Diagnostics 模块中面向服务的车辆诊断(SOVD)的核心异常类型([SWS_DM_01807]、SWS Diagnostics §8.51.4 “Class: DiagSovdException”)。它由内部诊断类抛出,以指示在处理 SOVD 请求过程中的特定错误状态([SWS_DM_01807]、SWS Diagnostics, 第69页)。

该类公有派生自常规基类异常 ara::core::Exception([SWS_DM_01807]、SWS Diagnostics §8.51.4)。其直接交互对象包括模块 diag 的功能性诊断类(用于分析诊断请求并在出错时触发异常),以及必须捕获并处理此类异常的调用方应用软件。该类在头文件 ara/diag/diag_sovd_error_domain.h 中声明,以满足上层架构要求([SWS_DM_01808]、SWS Diagnostics §8.51.4.1.1.1 “DiagSovdException”)。

生命周期

ara::diag::DiagSovdException 的实例化通过一个强制接收 ara::core::ErrorCode 作为参数 err 的构造函数进行([SWS_DM_01808]、SWS Diagnostics §8.51.4.1.1.1)。该构造函数被声明为 explicit,以防止将错误代码隐式转换为异常对象,并被标记为 noexcept([SWS_DM_01808])。

在健壮性和并发性方面,规范保证了构造过程完全异常安全(exception safe)且线程安全([SWS_DM_01808])。由此确保了即使在并发诊断场景中,错误生成本身也不会引发进一步的异常或不一致性。该异常的生命周期遵循 C++ 的标准栈展开机制:在发生错误时,该对象在诊断函数内部创建,经由调用层级向上透传,并在离开处理该异常的 catch 块时被确定性销毁。

使用路径

使用 ara::diag::DiagSovdException 时的典型流程分为以下步骤:

  • 应用程序在模块 diag 的接口上发起与 SOVD 相关的诊断操作。
  • 负责的诊断组件检测到错误条件,并从 SOVD 错误域生成匹配的 ara::core::ErrorCode([SWS_DM_01808])。
  • 该组件通过 explicit DiagSovdException(err) 构造异常并将其抛出([SWS_DM_01808]、[SWS_DM_01807])。
  • 应用程序通过 catch (const ara::diag::DiagSovdException& ex) 或多态地通过 const ara::core::Exception& 捕获异常,以对错误状态做出响应。
使用 DiagSovdException 进行异常处理的流程应用DiagnoseklasseDiagSovdException执行 SOVD 诊断调用SOVD-Fehlerbedingung feststellenara::core::ErrorCode erzeugenDiagSovdException(err) konstruierenthrow DiagSovdExceptioncatch (const DiagSovdException& ex)分析并处理错误

时序图:触发 DiagSovdException 时的调用与处理顺序。来源:[SWS_DM_01807]、[SWS_DM_01808]。

错误场景

作为错误传输载体,该类本身用于处理异常状态([SWS_DM_01807])。其创建的形式化前置条件是提供已初始化的 ara::core::ErrorCode([SWS_DM_01808])。由于构造函数被声明为 noexcept,因此在对象创建本身时不会发生异常([SWS_DM_01808])。

解释:推测该实例持久封装了所传递的错误代码,以便下游错误处理程序可以通过 ara::core::Exception 的继承函数对其进行检查。 问题 Q-332b95b96849e379 (未决)在禁用 C++ 异常的系统配置中,诊断组件推测可能会优先采用备选错误机制,而 DiagSovdException 则代表了专用的异常处理路径。

本指南基于 AUTOSAR Adaptive Platform R25-11 规范,总结了对 SOVD 异常处理的要求。

UML 类图

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

G nara__diag__DiagSovdException335 DiagSovdException + DiagSovdException() nara__core__Exception792 Exception nara__diag__DiagSovdException335->nara__core__Exception792 nstd__exception10 std::exception nara__core__Exception792->nstd__exception10

构造函数和析构函数

Construct a new DiagSovdException from an ErrorCode.

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

方法文档

函数 DiagSovdException [SWS_DM_01808] Upstream: RS_AP_00119

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

Construct a new DiagSovdException from an ErrorCode.

Header-Datei#include "ara/diag/diag_sovd_error_domain.h"
Scopeclass ara::diag::DiagSovdException
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_01808
Status
valid/unmigrated
Version
AUTOSAR/AP/record/SWS_DM_01808@rel:R25-11#d4553823
Content hash
d4553823
Source
https://www.autosar.org/fileadmin/standards/R25-11/AP/AUTOSAR_AP_SWS_Diagnostics.pdf#nameddest=SWS_DM_01808
Status: valid/unmigrated Version: rel:R25-11#e8244057 Versionshistorie & Revisions (1 transition, 4 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_01808@rel:R25-11#e8244057
Point-in-Time History:
Recorded Revisions (4):
  • R25-11rel:R25-11#76e1ec2d2026-09-30
  • R23-11rel:R23-11#62167f502026-10-14
  • R24-11rel:R24-11#e82440572026-10-14
  • R25-11rel:R25-11#e82440572026-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