Служит базовым классом для всех исключений AUTOSAR и инкапсулирует потокобезопасный код ошибки для анализа.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: d4eaa8466f70ПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Служит базовым классом для всех исключений AUTOSAR и инкапсулирует потокобезопасный код ошибки для анализа.
Класс ara::core::Exception служит общим базовым классом для всех типов исключений Adaptive Platform и встраивает ErrorCode в стандартизированную иерархию исключений C++ [SWS_CORE_00611]. При возникновении ошибок он потокобезопасно передает этот код ошибки обработчику, который может проанализировать его с помощью Error() или производного стандартного метода what()[SWS_CORE_00613]. Все операции строго безопасны по отношению к исключениям и объявлены как noexcept. Чтобы исключить случайную срезку объектов (object slicing) у производных типов, операции копирования выполнены защищенными.
Контекст
Класс ara::core::Exception служит общим базовым классом для всех типов исключений в рамках AUTOSAR Adaptive Platform. Он наводит мост между обработкой исключений стандартной библиотеки C++ и моделью ошибок AUTOSAR: с одной стороны, он открыто наследует от std::exception и переопределяет ее виртуальную функцию-член what()[SWS_CORE_00612], с другой стороны — переносит встроенный объект ошибки типа ara::core::ErrorCode[SWS_CORE_00611], [SWS_CORE_00613].
Основная обязанность ara::core::Exception заключается в структурированном предоставлении информации об ошибках через границы вызовов в случае исключения. Интерпретация: класс, по-видимому, задуман как общий корень для доменно-специфичных классов исключений платформы; его операции копирования специфицированы как protected во избежание непреднамеренной срезки объектов (object slicing) у производных экземпляров [SWS_CORE_00614], [SWS_CORE_00618]. Вопрос Q-20ffec7888b9e724 (открытый)
Создание ara::core::Exception строго требует явного указания кода ошибки при вызове конструктора [SWS_CORE_00611]. Этот конструктор определен как noexcept и, таким образом, сам не выбрасывает исключений.
Отношения владения и возможности копирования следуют строгим правилам защиты: как конструктор копирования [SWS_CORE_00618], так и оператор присваивания копированием [SWS_CORE_00614] имеют модификатор доступа protected. Это предотвращает неполное копирование полиморфных подклассов через интерфейсы базового класса. Для переноса же ресурсов конструктор перемещения [SWS_CORE_00615] и оператор присваивания перемещением с квалификатором ссылок &[SWS_CORE_00616] открыто доступны как noexcept=default.
Уничтожение происходит детерминированно через виртуальный деструктор [SWS_CORE_00617], который специфицирован как noexcept override=default и обеспечивает надлежащую очистку производных экземпляров. Параллельный доступ на чтение к методам, а также инстанциирование обозначены как потокобезопасные [SWS_CORE_00611], [SWS_CORE_00612], [SWS_CORE_00613].
Путь использования
Стандартный процесс охватывает этапы от обнаружения ошибки и генерации исключения до структурированной диагностики в обработчике исключений:
Создание и генерация: компонент обнаруживает ошибочную ситуацию, инстанциирует исключение с подходящим ErrorCode[SWS_CORE_00611] и выбрасывает объект через throw.
Перехват: вышестоящий блок перехватывает объект по ссылке (например, как const ara::core::Exception& или полиморфно как const std::exception&).
Стандартизированный текстовый вывод: через what() можно получить текстовое пояснение в виде нуль-терминированной строки [SWS_CORE_00612]. При этом все гарантии времени жизни std::exception::what полностью сохраняются.
Подробная проверка ошибок: через функцию-член Error() обработчик обращается к константной ссылке на встроенный ErrorCode[SWS_CORE_00613] для машинного анализа системных доменов ошибок и кодов.
Условия времени жизни: Ссылка, предоставляемая Error(), привязывается к объекту исключения [SWS_CORE_00613]; её запрещено использовать дольше времени жизни Exception. К возврату what() применяются правила времени жизни стандартной библиотеки [SWS_CORE_00612].
Предотвращение недопустимых состояний объекта: Инкапсуляция операций копирования в области protected предотвращает нарушение согласованности полиморфных подклассов из-за непреднамеренной срезки объектов (slicing) [SWS_CORE_00614], [SWS_CORE_00618].
Настоящее руководство основано на спецификации AUTOSAR Adaptive Platform версии R25-11.
Return the explanatory string. This function overrides the virtual function std::exception:: what. All guarantees about the lifetime of the returned pointer that are given for std::exception::what are preserved. ≙ std::exception::
Return the explanatory string. This function overrides the virtual function std::exception:: what. All guarantees about the lifetime of the returned pointer that are given for std::exception::what are preserved.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 1b4e9bb17f9aПроисхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Функция-член what класса ara::core::Exception служит для синхронного получения поясняющей строки о возникшей ошибке [SWS_CORE_00612]. Она переопределяет виртуальную функцию std::exception::what и возвращает указатель на нуль-терминированную строку (const char*) [SWS_CORE_00612].
Использование и время жизни
Функция не ожидает входных параметров. В отношении срока действия возвращаемого указателя сохраняются все гарантии, действующие для std::exception::what[SWS_CORE_00612]. Чтобы использовать функцию, необходимо подключить заголовочный файл ara/core/exception.h[SWS_CORE_00612].
Обработка ошибок и параллелизм
Безопасность относительно исключений: операция объявлена как noexcept и специфицирована как безопасная относительно исключений (exception safe); она сама не генерирует исключений [SWS_CORE_00612].
Параллелизм: выполнение специфицировано как потокобезопасное (thread-safe) [SWS_CORE_00612]. Таким образом, вызовы могут безопасно осуществляться из параллельных потоков.
Это указание по использованию сгенерировано автоматически.
gemini-3.8-flash-low· 2026-10-13 · Немецкий оригинал