Инкапсулирует коды ошибок Platform Health Management как потокобезопасное исключение для завершившихся сбоем операций модуля.
СОЗДАНО ИИне провереноМодель: 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 и выбрасывается, чтобы обеспечить структурированную обработку ошибок через соответствующие блоки catch[SWS_PHM_01243]. В качестве важного граничного условия его конструирование специфицировано как noexcept, thread-safe, а также exception-safe, благодаря чему вторичные ошибки при создании исключения исключены [SWS_PHM_01243]. Интерпретация: вызывающие стороны обычно перехватывают объект по ссылке, чтобы детерминированно проанализировать содержащийся код ошибки без динамического выделения памяти. Вопрос (открытый)
Контекст
Класс ara::phm::PhmException выступает в качестве выделенного типа исключений для Platform Health Management (PHM) внутри AUTOSAR Adaptive Platform. Согласно определению класса, он открыто наследует от ara::core::Exception и представляет собой связующее звено для передачи состояний ошибки модуля phm вызывающим системным и прикладным компонентам через стандартизированный механизм исключений C++. В архитектуре системы класс взаимодействует в первую очередь между оперативными службами PHM, выполняющими функции мониторинга и фиксирующими состояния ошибки при нарушениях правил, и вышестоящими подпрограммами обработки ошибок приложения. Благодаря интеграции в фундаментальную модель обработки ошибок ara::core обеспечивается унифицированная транспортировка и обработка доменно-специфичных отчетов об ошибках из Platform Health Management.
Жизненный цикл
Жизненный цикл экземпляра ara::phm::PhmException начинается с явного инстанцирования в случае ошибки. Согласно [SWS_PHM_01243], объект создается через конструктор PhmException(ara::core::ErrorCode errorCode) при подключении заголовочного файла ara/phm/phm_error_domain.h. Создание объявлено как noexcept и обладает свойствами как «exception safe», так и «thread-safe» [SWS_PHM_01243]. Это гарантирует, что инстанцирование самого объекта исключения происходит безопасно даже при высоком параллелизме и ни в какой момент времени не вызывает неожиданных вторичных исключений.
Объект инкапсулирует переданный ara::core::ErrorCode и после своего создания обладает неизменяемым состоянием. Во время развертывания стека объект исключения транспортируется средой выполнения. Уничтожение происходит детерминированно при выходе из обрабатывающего блока catch в соответствии со стандартными правилами C++. Интерпретация: экземпляры, вероятно, обычно создаются непосредственно в выражении throw на стеке и перехватываются по ссылке (const ara::phm::PhmException&), благодаря чему на стороне вызывающего объекта не требуется динамическое управление памятью. Вопрос Q-37fc47021a78a0db (открытый)
Путь использования
Типичный путь использования начинается тогда, когда контролируемая операция Platform Health Management завершается сбоем или обнаруживается недопустимое отклонение состояния. Инициирующая функция PHM затем инициализирует объект исключения с соответствующим кодом ошибки и выбрасывает его из [SWS_PHM_01243]. На вызывающей стороне защищенный фрагмент кода выполняется внутри блока try-catch. Вероятно, приложения перехватывают исключение либо специфически как ara::phm::PhmException, либо полиморфно через базовый класс ara::core::Exception. Вопрос Q-54638c0dde7d9195 (открытый) В обработчике исключений содержащийся 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]. Сценарии ошибок, следовательно, касаются не самого класса исключений, а отражают прикладные причины ошибок, закодированные в инкапсулированном ara::core::ErrorCode домена ошибок PHM.
Настоящее руководство было сгенерировано ИИ на основе спецификации AUTOSAR Adaptive Platform R25-11.
UML-диаграмма классов
Hohle Dreieckspfeile = Vererbung (zeigt zur Basisklasse); Klicken öffnet die jeweilige Klassenseite.
gemini-3.8-flash-low· 2026-10-13 · Немецкий оригинал