Encapsulation of an ErrorDomain. An ErrorDomain is the controlling entity for ErrorCode’s error code values, and defines the mapping of such error code values to textual representations. This type constitutes a base class for ErrorDomain implementations. This class is a literal type, and subclasses are strongly advised to be literal types as well.
Служит базовым классом для управления кодами ошибок и сопоставляет доменно-специфичные значения ошибок с текстовыми сообщениями.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: d0712f7c0a23ПроисхождениеОткрытые вопросы (2)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Служит базовым классом для управления кодами ошибок и сопоставляет доменно-специфичные значения ошибок с текстовыми сообщениями.
Класс ara::core::ErrorDomain служит абстрактным базовым классом для управления значениями ошибок и сопоставляет специфичные для области коды с их текстовыми представлениями [SWS_CORE_00153]. Подклассы инкапсулируют общесистемный уникальный идентификационный номер и определяют преобразование в неизменяемые тексты ошибок, а также типоспецифичную обработку исключений. Чтобы обеспечить возможность использования в качестве Literal Type во время компиляции, базовый класс имеет невиртуальный защищенный деструктор [SWS_CORE_00136]. Операции копирования и перемещения при этом полностью запрещены, благодаря чему экземпляры выступают в качестве неизменяемых сущностей.
Контекст
Класс ara::core::ErrorDomain образует общую основу для структурированного управления ошибками в AUTOSAR Adaptive Platform. Он выступает в качестве абстрактного базового класса для конкретных доменов ошибок и берет на себя центральную функцию управления значениями ошибок, инкапсулированными в ara::core::ErrorCode. Каждый домен развертывает собственное пространство имен и определяет отображение доменно-специфичных значений ошибок типа CodeType ([SWS_CORE_00122]) в содержательные текстовые представления через Message() ([SWS_CORE_00153]). Кроме того, класс предоставляет псевдоним типа IdType ([SWS_CORE_00121]) для общесистемных уникальных идентификаторов доменов, а также SupportDataType ([SWS_CORE_00123]) для дополнительных данных производителя.
В общей системе ara::core::ErrorDomain взаимодействует с тремя основными участниками:
Подклассы: специфические домены ошибок наследуются от ara::core::ErrorDomain и реализуют чисто виртуальные функции-члены для имен доменов, сообщений об ошибках и обработки исключений.
ara::core::ErrorCode: представляет конкретное значение ошибки и делегирует определение описательного текста назначенному домену ошибок.
Клиент / прикладной код: запрашивает информацию о состоянии через код ошибки или напрямую у домена ([SWS_CORE_00152]) либо принимает сгенерированные исключения C++ ([SWS_CORE_00154]).
Инстанцирование ara::core::ErrorDomain выполняется защищенным образом: конструктор имеет видимость protected и ожидает общесистемный уникальный идентификатор домена типа IdType ([SWS_CORE_00135]). Поскольку конструктор объявлен как constexpr и noexcept, базовый класс поддерживает создание в качестве Literal Type во время компиляции. Подклассам настоятельно рекомендуется также обеспечивать это свойство Literal Type.
Любое дублирование или перемещение экземпляров доменов запрещено:
Деструктор объявлен как protected и определен как реализация по умолчанию ([SWS_CORE_00136]). Он намеренно оставлен тривиальным и невиртуальным, чтобы класс мог оставаться Literal Type. Хотя ara::core::ErrorDomain предоставляет чисто виртуальные интерфейсы, полиморфное уничтожение через указатель на базовый класс не требуется ([SWS_CORE_00136]). На практике конкретные экземпляры доменов, вероятно, управляются как долгоживущие или статические объекты (интерпретация). Вопрос Q-a874dd64f6320d21 (открытый)
Что касается отношений владения, все указатели на имена ([SWS_CORE_00152]) и тексты ошибок ([SWS_CORE_00153]) остаются во владении класса домена и не должны освобождаться клиентами. Все операции чтения и сравнения являются потокобезопасными и исключениебезопасными ([SWS_CORE_00135], [SWS_CORE_00151]).
Путь использования
Два экземпляра ara::core::ErrorDomain сравниваются как равные тогда и только тогда, когда совпадают их идентификаторы доменов, полученные через Id() ([SWS_CORE_00151]) ([SWS_CORE_00137], [SWS_CORE_00138]). Типичная последовательность разрешения ошибок и обработки исключений делится на следующие шаги:
Идентификация домена: клиент или объект ошибки определяет имя домена в виде нуль-терминированной строки через Name() ([SWS_CORE_00152]).
Разрешение сообщения: через Message(errorCode) числовое значение ошибки передается домену ([SWS_CORE_00153]). Домен возвращает нуль-терминированный текст ошибки на основе указателя, который никогда не равен nullptr.
Обработка исключений: если код ошибки необходимо преобразовать в исключение, клиент вызывает ThrowAsException(errorCode) ([SWS_CORE_00154]). Затем домен генерирует соответствующий экземпляр ara::core::Exception, инкапсулирующий переданный код ошибки.
При работе с ara::core::ErrorDomain необходимо учитывать следующие сценарии ошибок и требования к интерфейсу:
Неверная принадлежность к домену: если методу Message() передается errorCode, который происходит не из этого конкретного ErrorDomain, это представляет собой специфицированное нарушение WrongDomainOfAn-ErrorCodeViolation ([SWS_CORE_00153]). Вызывающие стороны должны гарантировать, что код ошибки соответствует экземпляру домена.
Отключенные исключения C++: метод ThrowAsException() не является исключениебезопасным (not exception safe) и генерирует исключение ([SWS_CORE_00154]). Если исключения C++ отключены в наборе инструментов компилятора, эта функция не должна участвовать в разрешении перегрузки ([SWS_CORE_00154]).
Исключение нулевого указателя: ни Name(), ни Message() никогда не должны возвращать nullptr ([SWS_CORE_00152], [SWS_CORE_00153]). Реализация подкласса, возвращающая nullptr, нарушает спецификацию интерфейса.
Данное руководство было создано ИИ-ассистентом курации на основе спецификации AUTOSAR R25-11.
Compare for equality with another ara::core::ErrorDomain instance. Two ara::core::ErrorDomain instances compare equal when their identifiers (returned by Id()) are equal
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 59f6b727c495Происхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Функция-член Id() класса ara::core::ErrorDomain из заголовочного файла ara/core/error_domain.h синхронно возвращает уникальный идентификатор соответствующего домена ошибок ([SWS_CORE_00151]). Вызов не ожидает входных параметров и возвращает идентификатор домена как значение типа IdType, что обеспечивает однозначное различение разных доменов ошибок во всей системе.
Для обработки ошибок существенно, что функция объявлена как noexcept и классифицирована как exception safe ([SWS_CORE_00151]). Следовательно, она никогда не генерирует исключений и не сообщает ни о кодах ошибок, ни об особых ситуациях. Благодаря свойству метода constexpr идентификатор при необходимости может вычисляться уже во время компиляции и использоваться в константных выражениях.
Что касается параллелизма и условий вызова, Id() специфицирован как thread-safe ([SWS_CORE_00151]). Вызов не сохраняет состояние и не имеет изменяющих побочных эффектов, поэтому произвольное количество потоков может обращаться к одному и тому же экземпляру одновременно и без внешних механизмов блокировки.
При взаимодействии в рамках архитектуры доменов идентификатор служит основным критерием сравнения: два экземпляра ara::core::ErrorDomain считаются согласно спецификации равными тогда и только тогда, когда совпадают их идентификаторы, возвращаемые Id(), что напрямую реализуется оператором равенства operator== ([SWS_CORE_00137]).
Это указание по использованию создано ИИ и основано на AUTOSAR Adaptive R25-11.
Return a textual representation of the given errorCode.
The returned pointer remains owned by the ara::core::ErrorDomain sub-class and shall not be freed by clients.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 9827a3eb35a8ПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Чисто виртуальная функция Message базового класса ara::core::ErrorDomain из заголовочного файла ara/core/error_domain.h служит для синхронного получения текстового представления для переданного доменно-специфичного кода ошибки errorCode[SWS_CORE_00153]. Она возвращает указатель на нуль-терминированную строку (const char *), который гарантированно никогда не равен nullptr. Память, на которую указывает ссылка, остается во владении соответствующего подкласса ara::core::ErrorDomain и ни в коем случае не должна освобождаться вызывающими клиентами [SWS_CORE_00153].
В отношении параллелизма и надежности метод объявлен как noexcept, считается исключениебезопасным (exception safe) и спроектирован полностью потокобезопасным (thread-safe) [SWS_CORE_00153]. В отношении возможных состояний ошибок специфицировано, что errorCode, происходящий не из соответствующего экземпляра ara::core::ErrorDomain, приводит к нарушению типа WrongDomainOfAnErrorCodeViolation[SWS_CORE_00153].
Во взаимодействии с моделью обработки ошибок AUTOSAR конкретные домены ошибок, такие как ara::core::FutureErrorDomain[SWS_CORE_00443] и ara::core::CoreErrorDomain[SWS_CORE_05243], переопределяют этот метод для преобразования доменно-специфичных кодов ошибок в конкретные тексты сообщений. Интерпретация: взаимодействие с ara::core::ErrorCode::Message()[SWS_CORE_00518], которое возвращает текстовое представление в виде StringView, вероятно, основано на том, что ErrorCode перенаправляет преобразование методу Message ассоциированного домена ошибок. Вопрос Q-f9007fdf5234b6a4 (открытый)
Это указание по использованию было сгенерировано автоматически на основе требований спецификации.
This function will determine the appropriate exception type for the given ErrorCode according to [SWS_CORE_10953] and throw it. The thrown exception will contain the given ErrorCode.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: f434ab45abb9Происхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Чисто виртуальный метод ThrowAsException класса ara::core::ErrorDomain служит для синхронной генерации переданного кода ошибки в виде исключения типа ara::core::Exception[SWS_CORE_00154]. Функция принимает в качестве входного параметра ссылку на const ErrorCode &errorCode и не имеет возвращаемого значения, поскольку выполнение завершается выбросом исключения [SWS_CORE_00154].
В отношении поведения при ошибках и исключениях соответствующий домен определяет подходящий тип исключения для переданного кода ошибки согласно [SWS_CORE_10953] и выбрасывает его [SWS_CORE_00154]. Сгенерированное исключение содержит переданный ErrorCode[SWS_CORE_00154]. Функция классифицирована как не являющаяся исключениебезопасной (not exception safe) [SWS_CORE_00154].
Для параллелизма и контекста компилятора действуют следующие требования:
Потокобезопасность: вызов ThrowAsException специфицирован как потокобезопасный (thread-safe) [SWS_CORE_00154].
Ограничение при отключенных исключениях C++: если исключения C++ отключены в тулчейне компилятора, функция согласно [SWS_CORE_10304] не должна участвовать в разрешении перегрузок [SWS_CORE_00154].
Во взаимодействии с другими компонентами функция формирует основу для генерации исключений через объекты ошибок: так, ara::core::ErrorCode::ThrowAsException делегирует генерацию соответствующему домену через this->Domain().ThrowAsException(*this)[SWS_CORE_00519]. Конкретные реализации переопределяют этот интерфейс, чтобы выбрасывать специфичные исключения, такие как CoreException в CoreErrorDomain[SWS_CORE_05244] или FutureException в FutureErrorDomain[SWS_CORE_00444].
Этот текст был создан ИИ и основан на спецификации AUTOSAR Adaptive R25-11.
Руководство разработчика реализации в подготовке (сложность I1)
Any exception of the type as defined in [SWS_CORE_10953] 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.
This dtor is non-virtual (and trivial) so that this class can be a literal type. While this class has virtual functions, no polymorphic destruction is needed.
gemini-3.8-flash-low· 2026-10-13 · Немецкий оригинал