실패한 모듈 오퍼레이션에 대해 Platform Health Management의 오류 코드를 스레드 안전한 예외로 캡슐화합니다.
AI 생성미검증모델: gemini-3.8-flash-medium · 노력: medium · 온도: 제어 불가 · 프롬프트: 9c0b25d6fb92출처열린 질문 (2)
독일어 가이드에서 번역됨gemini-3.8-flash-low · 2026-10-13 · 독일어 원문
실패한 모듈 오퍼레이션에 대해 Platform Health Management의 오류 코드를 스레드 안전한 예외로 캡슐화합니다.
클래스 ara::phm::PhmException은 Platform Health Management에서 모듈별 오류를 캡슐화하고 호출 컴포넌트로 전달하기 위한 중앙 예외 유형 역할을 합니다. 이 클래스는 오류 감지 시 ara::core::ErrorCode과 함께 명시적으로 인스턴스화되고 던져져(throw), 해당 catch 블록을 통한 구조화된 오류 처리를 가능하게 합니다 [SWS_PHM_01243]. 주요 제약 조건으로서 해당 생성은 noexcept, 스레드 안전(thread-safe) 및 예외 안전(exception-safe)으로 지정되어 있어 예외 생성 시의 2차 오류가 배제됩니다 [SWS_PHM_01243]. 해석: 호출자는 동적 메모리 할당 없이 포함된 오류 코드를 결정론적으로 평가하기 위해 일반적으로 객체를 참조로 캐치합니다. 질문 (열림)
컨텍스트
클래스 ara::phm::PhmException은 AUTOSAR Adaptive Platform 내에서 Platform Health Management(PHM)를 위한 전용 예외 유형으로 기능합니다. 클래스 정의에 따라 이 클래스는 ara::core::Exception에서 public으로 파생되며, 표준화된 C++ 예외 메커니즘을 통해 모듈 phm의 오류 상태를 호출하는 시스템 및 애플리케이션 컴포넌트로 전달하기 위한 연결 고리를 제공합니다. 시스템 아키텍처에서 이 클래스는 모니터링 기능을 실행하고 규칙 위반 시 오류 상태를 감지하는 작동 중인 PHM 서비스와 애플리케이션의 상위 오류 처리 루틴 사이에서 주로 상호 작용합니다. ara::core의 기본 오류 처리 모델에 통합됨으로써, Platform Health Management의 도메인 특화 오류 보고가 일관되게 전송되고 처리될 수 있도록 보장합니다.
수명 주기
ara::phm::PhmException 인스턴스의 라이프사이클은 오류 발생 시 명시적인 인스턴스화와 함께 시작됩니다. [SWS_PHM_01243]에 따라 객체는 헤더 ara/phm/phm_error_domain.h을 포함하여 생성자 PhmException(ara::core::ErrorCode errorCode)를 통해 생성됩니다. 생성은 noexcept(으)로 선언되어 있으며 "exception safe" 및 "thread-safe" 속성을 모두 나타냅니다 [SWS_PHM_01243]. 이는 높은 동시성 상황에서도 예외 객체의 인스턴스화 자체가 안전하게 이루어지며, 어떠한 시점에서도 예기치 않은 2차 예외를 발생시키지 않음을 보장합니다.
이 객체는 전달된 ara::core::ErrorCode을 캡슐화하며 생성 후 불변 상태를 갖습니다. 스택 언와인딩(stack unwinding) 동안 예외 객체는 런타임 환경을 통해 전달됩니다. 소멸은 표준 C++ 규칙에 따라 처리 catch 블록을 벗어날 때 결정론적으로 발생합니다. 해석: 인스턴스는 일반적으로 throw 표현식에서 스택에 직접 생성되고 참조(const ara::phm::PhmException&)로 캐치되므로 호출자 측에서 동적 메모리 관리가 필요하지 않을 것으로 보입니다. 질문 Q-37fc47021a78a0db (열림)
사용 경로
일반적인 사용 경로는 Platform Health Management의 모니터링 작업이 실패하거나 허용되지 않는 상태 편차가 감지될 때 시작됩니다. 그런 다음 이를 트리거한 PHM 함수는 관련 오류 코드로 예외 객체를 초기화하고 이를 [SWS_PHM_01243]에서 던집니다. 호출자 측에서는 보호된 코드 섹션이 try-catch 블록 내에서 실행됩니다. 애플리케이션은 예외를 ara::phm::PhmException(으)로 구체적으로 캐치하거나 기본 클래스 ara::core::Exception을 통해 다형적으로 캐치할 것으로 추정됩니다. 질문 Q-54638c0dde7d9195 (열림) 예외 처리기에서는 원인을 분석하고 적절한 대책이나 비상 운전(limp-home) 전략을 시작하기 위해 포함된 ara::core::ErrorCode을 추출합니다.
시퀀스 다이어그램: PHM에서의 오류 감지부터 ara::phm::PhmException 발생 및 핸들러에서의 평가까지의 일반적인 흐름. 출처: [SWS_PHM_01243].
오류 시나리오
ara::phm::PhmException의 핵심 구성 요소는 런타임 시 오류 코드의 전달입니다. 객체 생성의 사전 조건은 유효한 ara::core::ErrorCode의 전달입니다 [SWS_PHM_01243]. 호출의 사후 조건은 전달된 오류 코드를 변경 없이 조회할 수 있도록 제공하는 완전히 초기화된 예외 객체입니다.
생성자가 명시적으로 noexcept 및 "exception safe"로 지정되어 있으므로 [SWS_PHM_01243], 예외 생성 중 자체적으로 예외가 발생하는 것은 배제됩니다. 따라서 객체 생성 실패가 발생할 수 없으며, 이는 오류 보고 중 std::terminate을 통한 조기 중단을 방지합니다. 또한 지정된 스레드 안전성("thread-safe")은 여러 스레드가 자체 예외를 통해 병렬로 오류 상태를 보고할 때 데이터 손상을 방지합니다 [SWS_PHM_01243]. 결과적으로 오류 시나리오는 예외 클래스 자체와 관련된 것이 아니라, PHM 오류 도메인의 캡슐화된 ara::core::ErrorCode에 인코딩된 기능적 오류 원인을 반영합니다.
이 가이드는 AUTOSAR Adaptive Platform R25-11 사양을 바탕으로 AI에 의해 생성되었습니다.
UML 클래스 다이어그램
Hohle Dreieckspfeile = Vererbung (zeigt zur Basisklasse); Klicken öffnet die jeweilige Klassenseite.
gemini-3.8-flash-low· 2026-10-13 · 독일어 원문