DEENESPTFRRUARHIKOZHNL

类 ara::per::PerException

[SWS_PER_00354] Upstream: RS_AP_00122, RS_AP_00127

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

Exception type thrown by Persistency.

Header-Datei#include "ara/per/per_error_domain.h"
Forwarding-Header#include "ara/per/per_fwd.h"
Scopenamespace ara::per
Basisklasse(n)ara::core::Exception

用户指南人工智能生成

用于基于特定错误代码封装和指示来自持久化模块的错误。
AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: abab05ca22f0 来源 未决问题(2)
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

用于基于特定错误代码封装和指示来自持久化模块的错误。

类 ara::per::PerException 在 AUTOSAR Adaptive Platform 中用作特定的异常类型,用于指示来自持久化模块的错误。它通过头文件 ara/per/per_error_domain.h 提供,并继承自基类 ara::core::Exception [SWS_PER_00355]。实例化通过显式传递封装了具体错误原因的 ara::core::ErrorCode 进行。通过将构造函数声明为 noexcept,创建被指定为完全异常安全且线程安全的 [SWS_PER_00355]。

上下文

类 ara::per::PerException 在 Release R25-11 的 AUTOSAR Adaptive Platform 中充当持久化功能集群(模块 per)的核心专用异常类型。根据其形式语法,该类公有派生自常规基异常 ara::core::Exception。其主要职责是将来自持久化子系统的严重错误状态或无法通过常规返回值直接处理的错误状态指示给上层应用层。该类在头文件 ara/per/per_error_domain.h 中定义 [SWS_PER_00355]。在架构中,它与平台的错误处理基础设施紧密交互,每个实例携带一个 ara::core::ErrorCode 用于准确的错误诊断 [SWS_PER_00355]。

生命周期

ara::per::PerException 对象的生命周期与持久化操作中错误的识别和传递直接相关。实例化通过一个显式构造函数进行,该构造函数恰好接收一个类型为 ara::core::ErrorCode 的参数 [SWS_PER_00355]。该构造函数被声明为 explicit 以阻止从错误代码进行的隐式类型转换,并带有规范 noexcept [SWS_PER_00355]。这确保了在异常对象本身的构造期间不会出现其他异常;因此该创建是完全异常安全的(exception safe)[SWS_PER_00355]。

关于并发性,ara::per::PerException 的创建被指定为线程安全的(thread-safe)[SWS_PER_00355]。调用构造函数后,对象沿调用栈抛出。所有权关系和销毁遵循异常处理的标准 C++ 规则:对象保留在运行时系统的内存区域中,直到捕获的 catch 块结束,随后被确定性地销毁。

使用路径

使用 ara::per::PerException 的典型流程分为以下步骤:

  • 错误识别与代码生成:持久化模块识别出无效状态或存储操作失败,并将其映射到相应的 ara::core::ErrorCode 中。
  • 实例化:传入此错误代码,通过 PerException(errorCode) 显式创建异常对象 [SWS_PER_00355]。
  • 触发异常:持久化子系统从受影响的函数接口抛出该异常实例。
  • 捕获与评估:调用方应用程序将该对象特化地作为 ara::per::PerException 捕获,或多态地作为 ara::core::Exception 或 std::exception 捕获。解读:应用程序随后应通过从基类继承的访问方法读取封装的 ara::core::ErrorCode,以启动针对性的故障排除措施。 问题 Q-6e48fd125d9938d8 (未决)

错误场景

由于 ara::per::PerException 用于表示错误,因此在错误场景中,对象创建的健壮性和错误信息的完整性处于核心地位。作为基本先决条件,构造函数需要一个有效的 ara::core::ErrorCode 作为输入参数 [SWS_PER_00355]。由于构造函数被声明为 noexcept,因此排除了在错误报告期间发生次级异常的可能性 [SWS_PER_00355]。此外,规定的线程安全性保证了即使在多个执行线程中并发发生错误,也不会发生数据损坏或未协调的副作用 [SWS_PER_00355]。

本指南仅基于 AUTOSAR Adaptive Platform Release R25-11 的规范数据。

UML 类图

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

G nara__per__PerException768 PerException + PerException() nara__core__Exception792 Exception nara__per__PerException768->nara__core__Exception792 nstd__exception10 std::exception nara__core__Exception792->nstd__exception10

构造函数和析构函数

Construct a new Persistency exception object containing an error code.

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

方法文档

函数 PerException [SWS_PER_00355] Upstream: RS_AP_00120, RS_AP_00121, RS_AP_00135, RS_AP_00159

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

Construct a new Persistency exception object containing an error code.

Header-Datei#include "ara/per/per_error_domain.h"
Scopeclass ara::per::PerException
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_PER_00355
Status
valid/unmigrated
Version
AUTOSAR/AP/record/SWS_PER_00355@rel:R25-11#ead3da3b
Content hash
ead3da3b
Source
https://www.autosar.org/fileadmin/standards/R25-11/AP/AUTOSAR_AP_SWS_Persistency.pdf#nameddest=SWS_PER_00355
Status: valid/unmigrated Version: rel:R25-11#de57fc23 Versionshistorie & Revisions (1 transition, 8 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_PER_00355@rel:R25-11#de57fc23
Point-in-Time History:
Recorded Revisions (8):
  • R25-11rel:R25-11#f5dacf6e2026-09-30
  • R19-11rel:R19-11#606e44052026-10-14
  • R20-11rel:R20-11#bf89ad122026-10-14
  • R21-11rel:R21-11#bf89ad122026-10-14
  • R22-11rel:R22-11#b5d8215d2026-10-14
  • R23-11rel:R23-11#9889dc0a2026-10-14
  • R24-11rel:R24-11#de57fc232026-10-14
  • R25-11rel:R25-11#de57fc232026-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