يدير رموز الأخطاء الخاصة بالحزمة الوظيفية (cluster) ara::core، ويترجمها إلى رسائل خطأ، ويطلق الاستثناءات المرتبطة بها.
مُولَّد بالذكاء الاصطناعيغير مُراجَعالنموذج: gemini-3.8-flash-medium · الجهد: medium · درجة الحرارة: غير قابل للتحكم · الموجّه: 8500dff6850eالمصدرأسئلة مفتوحة (1)
مترجم من الدليل الألمانيgemini-3.8-flash-low · 2026-10-13 · الأصل الألماني
يدير رموز الأخطاء الخاصة بالحزمة الوظيفية (cluster) ara::core، ويترجمها إلى رسائل خطأ، ويطلق الاستثناءات المرتبطة بها.
يمثل الصنف ara::core::CoreErrorDomain نطاق الخطأ للأخطاء الصادرة من الحزمة الوظيفية ara::core، ويقرن رموز الأخطاء العددية برسائل نصية وصفية [SWS_CORE_05243]. علاوة على ذلك، يتيح عبر ThrowAsException() تحويل رموز الأخطاء إلى استثناءات CoreException خاصة بالنوع [SWS_CORE_05244]. ونظراً لأن جميع دوال الاستعلام آمنة بالنسبة للخيوط (thread-safe) وقابلة للإنشاء بواسطة constexpr، فإن هذا النطاق يعد مناسباً للاستخدام عالي الكفاءة على مستوى الحزمة بالكامل. وإذا كانت استثناءات C++ معطلة في حزمة الأدوات (toolchain)، فإن دالة الاستثناء لا تشارك في مطابقة التحميل الزائد (overload resolution).
السياق
يمثل الصنف ara::core::CoreErrorDomain نطاق الخطأ المحدد لجميع حالات الخطأ التي تنشأ في الحزمة الوظيفية ara::core. وهو معرّف كتخصيص نهائي (final) من ErrorDomain، مما يمنع أي اشتقاق إضافي منه. يتيح الصنف عبر الدالة Name() الاسم القصير الفريد للنطاق [SWS_CORE_05242]. ولتحقيق تكامل متناسق مع نموذج معالجة الأخطاء في AUTOSAR، يعرّف CoreErrorDomain أسماء مستعارة مركزية للأنواع (type aliases): يشير Errc كاسم مستعار مباشرة إلى التعداد CoreErrc[SWS_CORE_05231]، بينما يشكل Exception الاسم المستعار لصنف الاستثناء الأساسي المرتبط CoreException[SWS_CORE_05232]. وتشتمل أهم أطراف التفاعل على كبسولات الأخطاء العامة من النوع ErrorCode، والتي تحتفظ بمرجع إلى نطاق الخطأ المعني، بالإضافة إلى المكونات المنفّذة التي تشخص حالات الخطأ أو تعالجها.
دورة الحياة
يتم إنشاء كائن CoreErrorDomain عبر المنشئ الافتراضي الخالي من المعاملات constexpr CoreErrorDomain() noexcept[SWS_CORE_05241]. وبما أن المنشئ مصرّح به كـ constexpr وnoexcept، فإنه يمكن إنشاء المثيل أثناء وقت الترجمة دون أي عبء تخصيص للذاكرة أو خطر إطلاق استثناء.
تفسير: نظراً لأن نطاقات الخطأ في معيار AUTOSAR Adaptive مصممة لتكون عديمة الحالة (stateless) وتوفر حصراً بيانات وصفية ثابتة بالإضافة إلى منطق التحويل، فمن المتوقع عادةً وجود مثيل مفرد (singleton) عام أو ساكن في النظام يتم الوصول إليه على مستوى الحزمة بأكملها. سؤال Q-7b4761bf124c5755 (مفتوح) يظل المثيل صالحاً طوال فترة تشغيل العملية بأكملها. وفيما يتعلق بالتزامن، تم تحديد عمليات الصنف بأنها آمنة بالنسبة للخيوط [SWS_CORE_05241]، [SWS_CORE_05242]، [SWS_CORE_05243]، مما يسمح بالاستعلام المتزامن من خيوط متوازية متعددة دون تدابير مزامنة إضافية.
مسار الاستخدام
أثناء التشغيل الفعلي، يتم الرجوع إلى CoreErrorDomain بشكل أساسي في سيناريوهين نموذجيين بواسطة نظام وقت التشغيل أو كود التطبيق: لفحص الأخطاء نصياً ولمعالجة الاستثناءات.
عند حدوث خطأ، يمكن الاستعلام عن الرسالة النصية المرتبطة به عبر الدالة العضو Message() عن طريق تمرير رمز الخطأ العددي [SWS_CORE_05243]. وتضمن المواصفة بشكل ملزم ألا تُرجع هذه الدالة مؤشراً فارغاً (nullptr) أبداً، بحيث يمكن استخدام const char* المُرجع بأمان لمخرجات التشخيص أو تسجيل الأحداث (logging). وإذا لم يكن المطلوب معالجة الخطأ كقيمة إرجاع بل تعميمه كاستثناء C++، يُستخدم لهذا الغرض التابع ThrowAsException()[SWS_CORE_05244]. يستقبل هذا التابع مثيلاً من ErrorCode، وينشئ كائن CoreException المطابق ويطلقه في مكدس الاستدعاءات الحالي.
تم التصريح عن الدالتين Name() وMessage() بالإضافة إلى المنشئ بأنها noexcept، كما تم تصنيفها بأنها آمنة من الاستثناءات (exception safe) [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.
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 · الأصل الألماني