Служит для инкапсуляции и сигнализации об ошибках из модуля персистентности на основе специфического кода ошибки.
СОЗДАНО ИИне провереноМодель: 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 функционирует как центральный специализированный тип исключений для функционального кластера персистентности (модуль per) внутри AUTOSAR Adaptive Platform в релизе R25-11. Согласно своему формальному синтаксису, класс открыто унаследован от общего базового исключения 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 релиза R25-11.
UML-диаграмма классов
Hohle Dreieckspfeile = Vererbung (zeigt zur Basisklasse); Klicken öffnet die jeweilige Klassenseite.
gemini-3.8-flash-low· 2026-10-13 · Немецкий оригинал