类 ara::crypto::CryptoException
[SWS_CRYPT_19905] Upstream: RS_CRYPTO_02310
class CryptoException : public ara::core::Exception {...};
Exception type thrown for CRYPTO errors.
| Header-Datei | #include "ara/crypto/common/crypto_error_domain.h" |
|---|
| Forwarding-Header | #include "ara/crypto/crypto_fwd.h" |
|---|
| Scope | namespace ara::crypto |
|---|
| Basisklasse(n) | ara::core::Exception |
|---|
用户指南人工智能生成
用于将加密操作中的错误封装并作为类型特定的 C++ 异常进行指示。
AI 生成
未审核
模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 1f6949d5652b
来源
未决问题(2)
用于将加密操作中的错误封装并作为类型特定的 C++ 异常进行指示。
类 ara::crypto::CryptoException 在 AUTOSAR Adaptive Platform 中充当专用异常,用于向调用方应用程序指示加密错误。它派生自 ara::core::Exception,并在操作失败时显式使用 ara::core::ErrorCode 进行实例化 [SWS_CRYPT_19906]。通过指定为 noexcept 且线程安全,保证了即使在并发环境中也能可靠生成异常且不会产生后续错误 [SWS_CRYPT_19906]。应用程序必须相应地对加密调用进行保护,以避免未处理的异常和程序中止。
上下文
类 ara::crypto::CryptoException 定义了 AUTOSAR Adaptive Platform 加密模块内错误状态的核心异常类型。作为标准异常类 ara::core::Exception 的特化,它在平台主要使用的基于错误码的返回机制与传统 C++ 异常处理机制之间架起了一座桥梁。它适用于加密操作失败且该错误状态必须跨调用栈作为异常进行传播的系统架构中。主要交互方包括在发生意外错误或进行显式检查时触发异常的加密功能模块与服务,以及启动加密操作(如加密、签名验证或密钥管理)并捕获可能出现的错误的上层应用组件。通过融入平台的统一错误域概念,ara::crypto::CryptoException 确保了加密错误能够以一致且类型化的方式报告给应用逻辑。
生命周期
ara::crypto::CryptoException 对象的创建是确定性的,通过向构造函数 [SWS_CRYPT_19906] 传递 ara::core::ErrorCode 类型的错误码来实现。该构造函数声明为 explicit,以防止从错误码进行隐式类型转换,并具有说明 noexcept [SWS_CRYPT_19906]。后者保证了在构造异常本身时不会引发进一步的异常,从而显著提高了加密子系统的异常安全性和运行安全性。根据规范,该实现被归类为线程安全 [SWS_CRYPT_19906],因此在并发执行环境中也能可靠地实例化和处理其实例。在所有权方面,该异常通常按值(by-value)抛出,并在捕获块中绑定为常量引用。由于该类除了错误码之外不管理任何动态资源,因此其生命周期通常随着退出处理 catch 块而结束(解释)。 问题 (未决)
使用路径
常规使用路径始于加密操作内部发生无法在本地解决的错误条件之时。该模块根据来自头文件 ara/crypto/common/crypto_error_domain.h 的加密错误域识别错误原因,并生成相应的 ara::core::ErrorCode [SWS_CRYPT_19906]。随后,使用该错误码实例化 ara::crypto::CryptoException 的实例 [SWS_CRYPT_19906],并通过 throw 语句进行指示。在应用端,调用组件通过 catch (const ara::crypto::CryptoException& e) 有针对性地捕获该异常。或者,继承层次结构也允许将其作为泛型 ara::core::Exception 进行多态捕获。通过查询所包含的 ara::core::ErrorCode,应用程序随后可以分析具体的加密错误原因并采取适当的应对措施。
时序图:加密操作中错误处理和异常触发的典型流程。来源:[SWS_CRYPT_19906]
错误场景
由于 ara::crypto::CryptoException 本身即是错误指示的载体,因此在错误场景下的重点在于异常生成的健壮性。通过保证异常安全、线程安全以及构造函数的 noexcept 保证,可防止在已有处于活动状态的错误处理期间发生二次异常 [SWS_CRYPT_19906]。应用逻辑中的一个潜在错误场景是传入的 ara::core::ErrorCode 封装了意外的或非加密的错误域;推测 Exception 仍会中立地处理该错误码并原样传输给处理程序(解释)。 问题 Q-0bb3376f547ce024 (未决)系统层面的另一个风险是未能捕获该异常,这在 C++ 运行时环境中会导致调用 std::terminate。因此,使用不带错误码返回机制的 API 的调用组件必须始终使用相应的 catch 块来保护加密调用。
本指南基于 AUTOSAR Adaptive Release R25-11 规范。所有说明均仅基于针对 ara::crypto::CryptoException 提供的规范数据。
UML 类图
Hohle Dreieckspfeile = Vererbung (zeigt zur Basisklasse); Klicken öffnet die jeweilige Klassenseite.
此版本没有元素数据
构造函数和析构函数
Construct a new CryptoException from an ErrorCode.
方法文档
explicit CryptoException (ara::core::ErrorCode err) noexcept;
Construct a new CryptoException from an ErrorCode.
| Header-Datei | #include "ara/crypto/common/crypto_error_domain.h" |
|---|
| Scope | class ara::crypto::CryptoException |
|---|
| Exception-Sicherheit | exception safe |
|---|
| Thread-Sicherheit | thread-safe |
|---|
Parameter (in)
| Parameter | Beschreibung |
|---|
| err | the ErrorCode |
Status: valid/unmigrated
Version: rel:R25-11#e5b2b44f
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_CRYPT_19906@rel:R25-11#e5b2b44f
Point-in-Time History:
Recorded Revisions (7):
- R25-11
rel:R25-11#9def4e0a2026-09-30 - R20-11
rel:R20-11#cce73a752026-10-14 - R21-11
rel:R21-11#cb340b962026-10-14 - R22-11
rel:R22-11#a0101a6a2026-10-14 - R23-11
rel:R23-11#773a91122026-10-14 - R24-11
rel:R24-11#1112adf52026-10-14 - R25-11
rel:R25-11#e5b2b44f2026-10-14 active
Historical Snapshot:
🚫
Requirement entfallen: Dieses Element ist im gewählten Release nicht mehr enthalten.
Requirement Text as-of this release:
Reachable Artifacts & Dependents:
| Date | Actor | Transition | Reason / Rationale | Campaign |
| 2026-08-13 | tool | none → valid/unmigrated | mechanically backfilled by migriere_status_backfill.py -- no per-field curation history exists yet for this record | 2026-08-13-status-backfill |
gemini-3.8-flash-low· 2026-10-13 · 德文原文