Управляет кодами ошибок кластера ara::core, преобразует их в сообщения об ошибках и генерирует соответствующие исключения.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 8500dff6850eПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Управляет кодами ошибок кластера ara::core, преобразует их в сообщения об ошибках и генерирует соответствующие исключения.
Класс ara::core::CoreErrorDomain представляет домен ошибок для ошибок из функционального кластера ara::core и сопоставляет числовым кодам ошибок описательные текстовые сообщения [SWS_CORE_05243]. Кроме того, с помощью ThrowAsException() он позволяет преобразовывать коды ошибок в типизированные исключения CoreException[SWS_CORE_05244]. Поскольку все методы запроса потокобезопасны и могут конструироваться как constexpr, данный домен подходит для эффективного использования в масштабах всего кластера. Если исключения C++ отключены в тулчейне, метод генерации исключений не участвует в разрешении перегрузки.
Контекст
Класс ara::core::CoreErrorDomain представляет собой специализированный домен ошибок для всех состояний ошибок, возникающих в функциональном кластере ara::core. Он определен как финальная специализация ErrorDomain, что предотвращает дальнейшее наследование. Класс предоставляет уникальное короткое имя домена с помощью метода Name()[SWS_CORE_05242]. Для согласованной интеграции в модель обработки ошибок AUTOSAR CoreErrorDomain определяет ключевые псевдонимы типов: Errc напрямую указывает на перечисление CoreErrc[SWS_CORE_05231], тогда как Exception служит псевдонимом для соответствующего базового класса исключений CoreException[SWS_CORE_05232]. К числу основных взаимодействующих компонентов относятся универсальные оболочки ошибок типа ErrorCode, хранящие ссылку на соответствующий домен ошибок, а также исполняемые компоненты, выполняющие диагностику или обработку ошибочных состояний.
Жизненный цикл
Создание CoreErrorDomain выполняется через конструктор по умолчанию без параметров constexpr CoreErrorDomain() noexcept[SWS_CORE_05241]. Поскольку конструктор объявлен как constexpr и noexcept, экземпляр может быть создан уже на этапе компиляции без затрат на выделение памяти и без риска возникновения исключений.
Интерпретация: поскольку домены ошибок в стандарте AUTOSAR Adaptive спроектированы без сохранения состояния и предоставляют исключительно неизменяемые метаданные и логику преобразования, в системе обычно существует глобальный или статический экземпляр-одиночка (singleton), к которому осуществляется доступ на уровне всего кластера. Вопрос Q-7b4761bf124c5755 (открытый) Экземпляр сохраняет валидность на протяжении всего времени работы процесса. С точки зрения конкурентности операции класса специфицированы как потокобезопасные [SWS_CORE_05241], [SWS_CORE_05242], [SWS_CORE_05243], что допускает одновременные запросы из нескольких параллельных потоков без дополнительных мер синхронизации.
Путь использования
Во время штатной работы среда выполнения или код приложения обращаются к CoreErrorDomain главным образом в двух типичных сценариях: для текстовой инспекции ошибок и для обработки исключений.
При возникновении ошибки связанное текстовое сообщение можно запросить через функцию-член Message(), передав числовой код ошибки [SWS_CORE_05243]. Спецификация строго гарантирует, что эта функция никогда не возвращает нулевой указатель (nullptr), поэтому возвращаемый const char* можно безопасно использовать для диагностического вывода или журналирования. Если ошибку требуется передать не как возвращаемое значение, а в виде C++-исключения, для этого служит метод ThrowAsException()[SWS_CORE_05244]. Он принимает экземпляр ErrorCode, инстанцирует соответствующее CoreException и выбрасывает его в текущий стек вызовов.
Диаграмма последовательности: стандартный процесс преобразования кодов ошибок и условной генерации исключений. Источники: [SWS_CORE_05243], [SWS_CORE_05244]
Сценарии ошибок
Функции Name() и Message(), а также конструктор объявлены как noexcept и классифицированы как безопасные относительно исключений [SWS_CORE_05241], [SWS_CORE_05242], [SWS_CORE_05243]. Они не генерируют исключений даже в условиях ошибок и не создают собственных кодов ошибок.
В противоположность этому метод ThrowAsException() явно помечен спецификатором noexcept(false) и обозначен как небезопасный относительно исключений, поскольку детерминированный выброс исключения (типа CoreException) является основной задачей данного интерфейса [SWS_CORE_05244]. Ключевым архитектурным предусловием является следующее: если в используемом тулчейне или настройках компилятора отключены C++-исключения, эта функция не должна участвовать в разрешении перегрузки [SWS_CORE_05244]. Это предотвращает ошибки компиляции в системных окружениях, придерживающихся отказоустойчивого встроенного подхода без обработки исключений C++.
Настоящее руководство было сгенерировано системой ИИ на основе спецификации R25-11.
Throw the exception type corresponding to the given ErrorCode.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: c5a4846a6615Происхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Функция-член ThrowAsException класса ara::core::CoreErrorDomain (определенная в заголовке ara/core/core_error_domain.h) служит для синхронной генерации исключения C++ на основе переданного кода ошибки [SWS_CORE_05244]. В качестве параметра функция принимает ссылку на константный экземпляр ErrorCode (const ErrorCode &errorCode) [SWS_CORE_05244]. Метод не имеет возвращаемого значения, а непосредственно выбрасывает исключение типа CoreException, которое полностью инкапсулирует переданный объект ErrorCode[SWS_CORE_05244].
В отношении контекста выполнения, параллелизма и условий компилятора действуют следующие требования:
Потокобезопасность: функция специфицирована как потокобезопасная (thread-safe) и поэтому может безопасно вызываться из параллельных контекстов [SWS_CORE_05244].
Безопасность исключений: поведение формально классифицируется как небезопасное относительно исключений (not exception safe), так как функция объявлена с noexcept(false) и штатно генерирует исключение [SWS_CORE_05244].
Ограничение компилятора: если исключения C++ отключены в наборе инструментов компилятора, метод согласно [SWS_CORE_10304] не должен участвовать в разрешении перегрузок [SWS_CORE_05244].
В архитектурной структуре данный метод переопределяет (override) чисто виртуальную базовую функцию ThrowAsException абстрактного класса ara::core::ErrorDomain[SWS_CORE_00154]. В типичном применении функция вызывается не напрямую у объекта домена, а инициируется через вспомогательный метод ErrorCode::ThrowAsException(), который динамически перенаправляет вызов через this->Domain().ThrowAsException(*this) в соответствующий домен ошибок [SWS_CORE_00519].
Это указание по использованию было сгенерировано ИИ на основе спецификации AUTOSAR Adaptive R25-11.
Руководство разработчика реализации в подготовке (сложность I1)
CoreException an exception containing the given ErrorCode
Hinweise: This function shall not participate in overload resolution when C++ exceptions are disabled in the compiler toolchain. As per [SWS_CORE_10304]
Request a governed re-review of this record. The record is not changed immediately.
gemini-3.8-flash-low· 2026-10-13 · Немецкий оригинал