Encapsulation of an error code. An ErrorCode contains a raw error code value and an Error Domain. The raw error code value is specific to this ErrorDomain.
Инкапсулирует специфичные для домена коды ошибок и дополнительные данные для анализа или преобразования в исключения C++.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 747258139aa5ПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Инкапсулирует специфичные для домена коды ошибок и дополнительные данные для анализа или преобразования в исключения C++.
Класс ara::core::ErrorCode инкапсулирует специфичное для домена исходное значение ошибки вместе с назначенным ему доменом ошибок и опциональными данными контекста [SWS_CORE_00513]. Он обеспечивает безопасное относительно исключений считывание кодов ошибок и текстов описания, а также передачу при необходимости в виде типизированного исключения C++ через ThrowAsException()[SWS_CORE_00518], [SWS_CORE_00519]. Если исключения C++ отключены на уровне цепочки инструментов, интерфейс исключений автоматически исключается из разрешения перегрузок [SWS_CORE_00519].
Контекст
Класс ara::core::ErrorCode служит центральной инкапсуляцией для информации об ошибках в AUTOSAR Adaptive Platform. Код ошибки всегда объединяет специфичное для домена исходное значение ошибки типа ErrorDomain::CodeType с соответствующим доменом ошибок ara::core::ErrorDomain[SWS_CORE_00513]. Домен ошибок определяет семантический контекст, в котором следует интерпретировать исходное значение, и устанавливает связь между числовым кодом и функциональным значением [SWS_CORE_00515]. Кроме того, ErrorCode может содержать специфичные для производителя дополнительные данные типа ErrorDomain::SupportDataType, предоставляя расширенный контекст возникновения ошибки без динамического выделения памяти [SWS_CORE_00516].
Жизненный цикл
Инстанцирование ErrorCode осуществляется либо через перечисляемый тип, либо через явное указание исходного значения и домена ошибок. Для типобезопасных значений перечислений существует шаблон конструктора, который через SFINAE участвует в разрешении перегрузок исключительно тогда, когда аргумент является enum-типом C++ [SWS_CORE_00512]. В качестве альтернативы прямой конструктор принимает числовое исходное значение, ссылку на ответственный ErrorDomain, а также опциональные дополнительные данные [SWS_CORE_00513].
Оба конструктора объявлены как constexpr и noexcept. Это гарантирует полную безопасность относительно исключений при создании и допускает конструирование уже во время компиляции [SWS_CORE_00512], [SWS_CORE_00513]. Интерпретация: поскольку ErrorCode управляет лишь элементарными данными и ссылкой на долгоживущий домен, класс ведет себя как легковесный тип-значение, который можно свободно копировать и считывать в различных потоках. Вопрос Q-8ac788b51fb75a1c (открытый) Все операции наблюдения специфицированы как потокобезопасные и безопасные относительно исключений [SWS_CORE_00514], [SWS_CORE_00515].
Путь использования
Типичный сценарий использования включает создание при обнаружении состояния ошибки, инспекцию соответствующих метаданных вызывающей стороной, а также при необходимости передачу в обработку исключений:
Создание: ошибка конструируется с использованием специфичного для домена значения перечисления и опциональных данных контекста [SWS_CORE_00512].
Идентификация: вызывающая сторона опрашивает числовое исходное значение с помощью Value()[SWS_CORE_00514], а соответствующий домен ошибок — через Domain()[SWS_CORE_00515].
Диагностика: дополнительные данные производителя считываются через SupportData()[SWS_CORE_00516], в то время как Message() возвращает понятное человеку описание в виде StringView[SWS_CORE_00518].
Генерация исключения: если ошибку требуется распространить в структуре управления, основанной на исключениях, вызывающая сторона генерирует соответствующее исключение через ThrowAsException()[SWS_CORE_00519].
Класс ara::core::ErrorCode служит мостом между безисключительным и исключительным управлением ошибками. Методы Value(), Domain(), SupportData() и Message() обладают гарантией noexcept и могут вызываться даже в условиях нехватки ресурсов без риска сопутствующих ошибок [SWS_CORE_00514], [SWS_CORE_00515], [SWS_CORE_00516], [SWS_CORE_00518].
Самостоятельный сценарий ошибки представляет метод ThrowAsException(), явно объявленный как noexcept(false) и not exception safe[SWS_CORE_00519]. Его поведение соответствует вызову this->Domain().ThrowAsException(*this); через связанный ErrorDomain он определяет соответствующий тип исключения и генерирует исключение, инкапсулирующее текущий экземпляр ErrorCode[SWS_CORE_00519]. Существенным граничным условием является то, что ThrowAsException() не участвует в разрешении перегрузки, если в наборе инструментов компилятора отключены исключения C++ [SWS_CORE_00519].
Сгенерировано ИИ autodocs на основе AUTOSAR Adaptive Platform R25-11.
Construct a new ErrorCode instance with parameters
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: aa921d126307ПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Шаблонный конструктор ErrorCode синхронно инстанцирует описание ошибки внутри класса ara::core::ErrorCode из заголовочного файла ara/core/error_code.h[SWS_CORE_00512]. Он принимает доменно-специфическое значение кода ошибки e перечислимого типа EnumT, а также опциональные дополнительные данные от производителя data типа ErrorDomain::SupportDataType, которые по умолчанию инициализируются пустыми [SWS_CORE_00512]. В качестве существенного ограничения конструктор с помощью SFINAE участвует в разрешении перегрузки только тогда, когда EnumT действительно является типом перечисления [SWS_CORE_00512]. В отличие от альтернативной перегрузки с явной передачей домена [SWS_CORE_00513], сопоставление с подходящим ErrorDomain, вероятно, выводится неявно на основе типа EnumT. Вопрос Q-83bc8268971748ff (открытый)
С точки зрения многопоточности и безопасности при ошибках конструктор специфицирован как потокобезопасный (thread-safe) и полностью безопасный относительно исключений (exception safe), а также объявлен как noexcept[SWS_CORE_00512]. Благодаря квалификатору constexpr инстанцирование может происходить уже во время компиляции в константных выражениях [SWS_CORE_00512]. Специфические сообщения об ошибках DET или DEM для конструирования не определены. Если представляемую ошибку требуется передать далее по потоку управления в виде исключения, созданный экземпляр предоставляет метод ThrowAsException(), который определяет и генерирует соответствующий тип исключения [SWS_CORE_00519]; аналогично этому домен ошибок также может выбросить исключение напрямую [SWS_CORE_00154].
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: f7a24bdeeeddПроисхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Функция-член SupportData() класса ara::core::ErrorCode из заголовка #include "ara/core/error_code.h" возвращает дополнительные контекстные данные об ошибке [SWS_CORE_00516]. Метод синхронно вызывается для экземпляра, не требует параметров и возвращает значение типа ErrorDomain::SupportDataType[SWS_CORE_00516]. Благодаря объявлению как constexpr и noexcept вызов гарантированно не генерирует исключений и может быть вычислен уже во время компиляции [SWS_CORE_00516].
С точки зрения многопоточности и надёжности выполнения метод специфицирован как потокобезопасный (thread-safe), а также безопасный относительно исключений (exception safe) [SWS_CORE_00516]. Поскольку это доступ только для чтения к внутреннему контексту ошибки, ошибочные состояния не возникают, благодаря чему вызов подходит также для критических и параллельных путей выполнения [SWS_CORE_00516].
Во взаимодействии с другими интерфейсами обработки ошибок SupportData() считывает те специфичные для производителя дополнительные данные, которые были опционально переданы конструктору ErrorCode через параметр data[SWS_CORE_00513]. При сравнении двух кодов ошибок с помощью operator== следует учитывать, что экземпляры считаются равными исключительно на основании возвращаемых значений Value() и Domain(); возвращаемое значение SupportData() явно не используется для проверки равенства [SWS_CORE_00571].
Это указание по использованию было сгенерировано автоматически на основе спецификации AUTOSAR Adaptive R25-11.
This function will determine the appropriate exception type for this ErrorCode and throw it. The thrown exception will contain this ErrorCode.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 3205bd108ecbПроисхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Функция-член ThrowAsException класса ara::core::ErrorCode служит для синхронной генерации возникшей ошибки в виде исключения C++ ([SWS_CORE_00519]). Функция не принимает входных параметров и не имеет возвращаемого значения, так как стандартный поток управления прерывается выбросом исключения.
Для определения конкретного типа исключения метод делегирует генерацию назначенному домену ошибок согласно поведению this->Domain().ThrowAsException(*this) ([SWS_CORE_00519]). Через интерфейс базового класса ara::core::ErrorDomain ([SWS_CORE_00154]) соответствующий домен определяет подходящий тип исключения согласно предписанию [SWS_CORE_10953]. Сгенерированное исключение всегда содержит вызвавший его экземпляр ErrorCode. Конкретные домены реализуют это специфическим образом:
ara::core::FutureErrorDomain выбрасывает FutureException с переданным экземпляром ошибки ([SWS_CORE_00444]).
Что касается параллелизма и граничных условий, ThrowAsException специфицирован как потокобезопасный ([SWS_CORE_00519]). Безопасность относительно исключений объявлена как not exception safe, а сигнатура явно содержит noexcept(false) ([SWS_CORE_00519]). Ключевое ограничение тулчейна заключается в том, что функция не участвует в разрешении перегрузки, если исключения C++ отключены в компиляторе ([SWS_CORE_00519]).
Это указание по использованию основано на спецификациях AUTOSAR релиза R25-11.
Руководство разработчика реализации в подготовке (сложность I1)
Any exception of the type determined by the associated ErrorDomain as defined in [SWS_CORE_10953]
Hinweise: This function shall not participate in overload resolution when C++ exceptions are disabled in the compiler toolchain. Behaves as if this->Domain().ThrowAsException(*this).
Request a governed re-review of this record. The record is not changed immediately.
gemini-3.8-flash-low· 2026-10-13 · Немецкий оригинал