DEENESPTFRRUARHIKOZHNL

类 ara::sm::SmException

[SWS_SM_81242] Upstream: RS_AP_00119

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

Exception type thrown by State Management.

Header-Datei#include "ara/sm/sm_error_domain.h"
Forwarding-Header#include "ara/sm/sm_fwd.h"
Scopenamespace ara::sm
Basisklasse(n)ara::core::Exception

用户指南人工智能生成

封装State Management的错误代码,以便作为C++异常传递和处理关键功能错误。
AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 72647117def3 来源 未决问题(1)
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

封装State Management的错误代码,以便作为C++异常传递和处理关键功能错误。

类ara::sm::SmException用于传递在State Management操作中出现的异常情况[SWS_SM_81242]。它派生自ara::core::Exception,并封装了一个特定的ara::core::ErrorCode,以精确识别所发生的错误原因。其创建通过显式构造函数完成,该构造函数被指定为线程安全且异常安全[SWS_SM_81243]。调用应用程序结构化地捕获该对象,以分析其中包含的错误代码并触发相应的恢复措施。

上下文

类ara::sm::SmException充当AUTOSAR Adaptive Platform中功能集群State Management的核心异常[SWS_SM_81242]。它定义在头文件ara/sm/sm_error_domain.h中,并公开派生自基础平台异常类ara::core::Exception AUTOSAR_AP_SWS_StateManagement §8.1.4 “Class: SmException”。在文档中,该类的规范状态为DRAFT [SWS_SM_81242]。

在架构上下文中,该类连接了三个核心角色:在状态操作失败时作为触发实例的State Management、作为处理程序的调用Adaptive应用程序,以及提供统一错误处理接口的ara::core底层基础架构。作为错误状态的载体,它用于通过C++异常机制将来自模块sm的错误情况同步传递给上级控制实例。

生命周期

ara::sm::SmException的实例化显式地通过构造函数SmException(ara::core::ErrorCode errorCode) [SWS_SM_81243]执行。该构造函数声明为noexcept,并同时具备异常安全性(exception safe)和线程安全性(thread-safe)特性AUTOSAR_AP_SWS_StateManagement §8.1.4.1.1.1 “SmException”。这保证了即使在并发执行上下文中创建,异常对象本身的创建也不会失败或触发进一步的异常。

创建之后,该实例通常按值(by value)抛出,并在调用上下文中作为常量对象的引用(const ara::sm::SmException&或多态地作为const ara::core::Exception&)被捕获。由于规范未指定特定的析构函数或手动清理例程,按推测,一旦离开负责的处理块,异常对象的销毁即完全遵循C++标准语义和基类ara::core::Exception的机制。 问题 Q-85b1fd2f6082db8e (未决)

使用路径

典型流程始于应用或平台组件向State Management发出状态控制请求。如果请求的状态更改无法在内部完成,或者存在严重的异常错误,则State Management会通过指定相应的ara::core::ErrorCode [SWS_SM_81243]来实例化ara::sm::SmException的实例。

通过 SmException 发出错误信号应用State ManagementSmException执行状态请求Fehler identifizieren (ErrorCode)SmException(errorCode)Instanz bereitgestelltthrow SmExceptioncatch (const SmException&) 并评估错误代码

时序图:State Management中使用SmException发出错误信号并进行处理的典型过程。来源:[SWS_SM_81242]、[SWS_SM_81243]。

调用组件在相应的catch块中捕获抛出的异常。通过从基类ara::core::Exception继承的方法,应用程序可以检查封装的ara::core::ErrorCode,以便从语义上对应错误原因,并采取针对性的措施来排除错误或恢复系统状态。

错误场景

类ara::sm::SmException本身并不代表易出错的操作元素,而是State Management内部异常情况的主要载体对象[SWS_SM_81242]。创建的基本前置条件是在构造函数调用时提供一个已初始化的ara::core::ErrorCode对象[SWS_SM_81243]。

如果抛出的ara::sm::SmException在调用栈中未被任何匹配的处理程序捕获,根据C++标准规则,这将导致调用std::terminate,从而造成受影响进程不受控地中止。在要求放弃异常而改用ara::core::Result的实现中,会避免抛出异常;但是,如果异常路径可用,该封装可确保原始错误代码在未被篡改的情况下传输用于错误诊断。

本类指南基于AUTOSAR Adaptive R25-11规范。所有陈述均基于所引用的规范项。

UML 类图

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

G nara__sm__SmException872 SmException + SmException() nara__core__Exception792 Exception nara__sm__SmException872->nara__core__Exception792 nstd__exception10 std::exception nara__core__Exception792->nstd__exception10

构造函数和析构函数

Construct a new StateManagement exception object containing an error code.

explicit SmException (ara::core::ErrorCode errorCode) noexcept;

方法文档

函数 SmException [SWS_SM_81243] Upstream: RS_AP_00119, RS_AP_00159

explicit SmException (ara::core::ErrorCode errorCode) noexcept;

Construct a new StateManagement exception object containing an error code.

Header-Datei#include "ara/sm/sm_error_domain.h"
Scopeclass ara::sm::SmException
Exception-Sicherheitexception safe
Thread-Sicherheitthread-safe

Parameter (in)

ParameterBeschreibung
errorCodeThe error code.

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

Record
AUTOSAR/AP/record/SWS_SM_81243
Status
valid/unmigrated
Version
AUTOSAR/AP/record/SWS_SM_81243@rel:R25-11#689ea1f0
Content hash
689ea1f0
Source
https://www.autosar.org/fileadmin/standards/R25-11/AP/AUTOSAR_AP_SWS_StateManagement.pdf#nameddest=SWS_SM_81243
Status: valid/unmigrated Version: rel:R25-11#aa947f45 Versionshistorie & Revisions (1 transition)
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_SM_81243@rel:R25-11#aa947f45
Point-in-Time History:
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