오류 코드, 텍스트 설명 및 예외를 제공하기 위한 Persistency 모듈의 오류 도메인을 정의합니다.
AI 생성미검증모델: gemini-3.8-flash-medium · 노력: medium · 온도: 제어 불가 · 프롬프트: da81ed3d3cb6출처열린 질문 (1)
독일어 가이드에서 번역됨gemini-3.8-flash-low · 2026-10-13 · 독일어 원문
오류 코드, 텍스트 설명 및 예외를 제공하기 위한 Persistency 모듈의 오류 도메인을 정의합니다.
ara::per::PerErrorDomain 클래스는 Persistency 모듈을 위한 오류 도메인을 정의하고 오류 코드를 설명 메시지 및 예외 타입과 연결합니다 [SWS_PER_00411]. 스레드 안전한 인터페이스를 통해 도메인 이름 조회뿐만 아니라 구체적인 오류 값에 대한 오류 설명 확인을 가능하게 합니다. 필요 시 ThrowAsException()을(를) 통해 오류를 C++ 예외로 변환합니다 [SWS_PER_00350]. 컴파일러 툴체인에서 예외가 비활성화된 경우 이 발생 기능은 사용할 수 없으므로, 오류 검사는 순수하게 반환값 기반으로 수행되어야 합니다.
컨텍스트
ara::per::PerErrorDomain 클래스는 AUTOSAR Adaptive Platform 내에서 Persistency 모듈(Persistency)을 위한 특정 오류 도메인을 정의합니다. 이 클래스는 기본 타입 정의 ara::core::ErrorDomain에서 상속되며 final(으)로 선언되어, 모든 영속성 관련 작업의 타입화된 오류 처리 및 오류 매핑을 위한 기반을 형성합니다. 기본 오류 코드 열거형 PerErrc을(를) 위한 표준화된 타입 별칭 Errc[SWS_PER_00411] 및 모듈별 예외 기본 클래스 PerException을(를) 위한 Exception[SWS_PER_00412]을(를) 통해, 이 클래스는 숫자 오류 값, 의미 있는 오류 메시지 및 구체적인 C++ 예외 객체를 연결합니다. 플랫폼 아키텍처에서 오류 도메인은 영속성 서비스, 호출하는 기능 클러스터, 그리고 ara::core의 일반 오류 및 결과 구조와 긴밀하게 상호작용합니다.
수명 주기
인스턴스 생성은 기본 생성자 PerErrorDomain()[SWS_PER_00313]을(를) 통해 수행됩니다. 이 생성자는 noexcept(으)로 선언되어 있으며, 완벽하게 예외 안전(exception safe)하고 스레드 안전(thread-safe)합니다. 해석: 전체 동작 중에 Persistency 오류에 대한 일관된 도메인 비교 및 타입 확인을 보장하기 위해 PerErrorDomain의 인스턴스는 일반적으로 수명이 긴 객체 또는 전역 객체로 관리될 것으로 추정됩니다. 질문 Q-5d90982fddec40a7 (열림) 클래스의 모든 조회 작업 역시 스레드 안전한 것으로 분류되므로, 호출자 수준에서 추가적인 동기화 메커니즘 없이도 여러 스레드가 동일한 도메인 인스턴스에 병렬로 접근할 수 있습니다.
사용 경로
전형적인 사용 경로는 도메인 식별, 이해하기 쉬운 진단 정보 조회, 그리고 선택적으로 Persistency 모듈에서 발생한 오류에 대한 예외 발생을 포함합니다. 먼저 멤버 함수 Name()은(는) 오류 도메인의 고유 식별자를 문자열로 반환합니다 [SWS_PER_00314]. 이 함수는 noexcept, 예외 안전 및 스레드 안전으로 명세되어 있습니다. Persistency 작업 중 오류가 발생하면 Message()을(를) 통해 해당 숫자 오류 값이 확인됩니다 [SWS_PER_00315]. 이 메서드는 CodeType 타입의 숫자 오류 코드를 받아들이고 완전한 예외 안전성 및 스레드 안전성 보증 하에 관련 오류 메시지를 상수 문자 포인터(const char *)(으)로 반환합니다.
오류 상태를 C++ 예외로 변환해야 하는 경우 ThrowAsException() 함수가 사용됩니다 [SWS_PER_00350]. 다음 시퀀스는 오류 조회 및 예외 발생 시의 상호작용을 보여줍니다:
시퀀스 다이어그램: PerErrorDomain을 통한 오류 검사, 텍스트 조회 및 예외 발생의 전형적인 흐름. 출처: [SWS_PER_00314], [SWS_PER_00315], [SWS_PER_00350].
오류 시나리오
실제 사용 시 개발자는 ara::per::PerErrorDomain의 오류 처리 및 예외 안전성과 관련된 다양한 보증을 고려해야 합니다. 조회 인터페이스 Name()[SWS_PER_00314] 및 Message()[SWS_PER_00315]은(는) 엄격하게 noexcept(으)로 선언되고 예외 안전한 것으로 분류되는 반면, 멤버 함수 ThrowAsException()은(는) 예외에 안전하지 않음(not exception safe)으로 간주됩니다 [SWS_PER_00350]. 이 동작은 함수의 목적이 오류 코드에 해당하는 예외를 제어된 방식으로 발생시키는 것(noexcept(false))이므로 시맨틱상 타당합니다.
중요한 제약 사항 하나는 C++ 예외가 활성화되지 않은 플랫폼 또는 빌드 구성과 관련이 있습니다. 컴파일러에서 예외 처리가 비활성화된 경우, ThrowAsException()은(는) [SWS_PER_00350]에 따라 오버로드 확인에 참여하지 않습니다. 이러한 환경에서는 애플리케이션 소프트웨어가 Exception[SWS_PER_00412] 타입의 예외 객체를 잡는 대신 제공된 별칭 Errc[SWS_PER_00411] 및 Message()[SWS_PER_00315]의 텍스트 설명을 통한 오류 코드 평가를 사용해야 합니다.
Throws the exception associated with the error code. As per [SWS_CORE_10304], this function does not participate in overload resolution when C++ exceptions are disabled in the compiler toolchain.
Throws the exception associated with the error code. As per [SWS_CORE_10304], this function does not participate in overload resolution when C++ exceptions are disabled in the compiler toolchain.
gemini-3.8-flash-low· 2026-10-13 · 독일어 원문