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 حصريًا عندما تكون المعاملة من نوع تعداد 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 بأنها آمنة خيطياً (thread-safe) ([SWS_CORE_00519]). تم التصريح عن أمان الاستثناءات بأنه not exception safe، وتتضمن البنية التوقيعية صراحةً noexcept(false) ([SWS_CORE_00519]). يتمثل أحد القيود المركزية لسلسلة الأدوات (Toolchain) في أن الدالة لا تشارك في حل التحميل الزائد (Overload Resolution) إذا كانت استثناءات C++ معطلة في المترجم ([SWS_CORE_00519]).
تستند ملاحظة الاستخدام هذه إلى مواصفات AUTOSAR للإصدار R25-11.
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 · الأصل الألماني