تُستخدَم كفئة أساسية لجميع استثناءات AUTOSAR وتُغلِّف رمز خطأ آمنًا لسلاسل العمليات لأغراض التقييم.
مُولَّد بالذكاء الاصطناعيغير مُراجَعالنموذج: gemini-3.8-flash-medium · الجهد: medium · درجة الحرارة: غير قابل للتحكم · الموجّه: d4eaa8466f70المصدرأسئلة مفتوحة (1)
مترجم من الدليل الألمانيgemini-3.8-flash-low · 2026-10-13 · الأصل الألماني
تُستخدَم كفئة أساسية لجميع استثناءات AUTOSAR وتُغلِّف رمز خطأ آمنًا لسلاسل العمليات لأغراض التقييم.
تُستخدَم الفئة ara::core::Exception كفئة أساسية مشتركة لجميع أنواع الاستثناءات في Adaptive Platform وتُضمِّن ErrorCode في التسلسل الهرمي القياسي لاستثناءات C++ [SWS_CORE_00611]. عند حدوث أخطاء، تنقل رمز الخطأ هذا بأمان لسلاسل العمليات إلى معالج يمكنه تقييمه عبر Error() أو الطريقة القياسية المشتقة what()[SWS_CORE_00613]. جميع العمليات آمنة تمامًا من حيث الاستثناءات ومُعلنة كـ noexcept. ولمنع حدوث اقتطاع عرضي للكائنات (Object Slicing) في الأنواع المشتقة، تم تنفيذ عمليات النسخ لتكون محمية.
السياق
تُستخدَم الفئة ara::core::Exception كفئة أساسية مشتركة لجميع أنواع الاستثناءات داخل AUTOSAR Adaptive Platform. وهي تشكل جسرًا بين معالجة الاستثناءات في مكتبة C++ القياسية ونموذج أخطاء AUTOSAR: فمن ناحية، تشتق علنًا من std::exception وتتجاوز دالتها العضو الافتراضية what()[SWS_CORE_00612]، ومن ناحية أخرى، تنقل كائن خطأ مدمجًا من النوع ara::core::ErrorCode[SWS_CORE_00611]، [SWS_CORE_00613].
تتمثل المسؤولية الرئيسية لـ ara::core::Exception في توفير معلومات الأخطاء بشكل منظم عبر حدود الاستدعاء في حالة الاستثناء. التفسير: يُرجَّح أن تكون الفئة قد صُممت كجذر مشترك لفئات الاستثناءات الخاصة بالنطاق في المنصة؛ وتم تحديد عمليات النسخ الخاصة بها كـ protected لمنع اقتطاع الكائنات (Object Slicing) غير المقصود في المثيلات المشتقة [SWS_CORE_00614]، [SWS_CORE_00618]. سؤال Q-20ffec7888b9e724 (مفتوح)
يتطلب إنشاء ara::core::Exception إلزاميًا التحديد الصريح لرمز خطأ عند استدعاء المُنشئ [SWS_CORE_00611]. وقد تم تعريف هذا المُنشئ كـ noexcept، وبالتالي لا يطرح بنفسه أي استثناءات.
تتبع علاقات الملكية وإمكانيات النسخ قواعد حماية صارمة: يمتلك كل من مُنشئ النسخ [SWS_CORE_00618] وعامل تعيين النسخ [SWS_CORE_00614] معدِّل الوصول protected. ويمنع ذلك نسخ الفئات الفرعية متعددة الأشكال بشكل غير كامل عبر واجهات الفئة الأساسية. في المقابل، يتوفر مُنشئ النقل [SWS_CORE_00615] وعامل تعيين النقل المزود بمؤهِّل مرجعي &[SWS_CORE_00616] علنًا كـ noexcept=default لنقل الموارد.
يتم التدمير بشكل حتمي عبر المُدمِّر الافتراضي [SWS_CORE_00617]، المحدد كـ noexcept override=default والذي يضمن التنظيف السليم للمثيلات المشتقة. وتُصنَّف عمليات الوصول المتزامن للقراءة إلى الطرق وكذلك إنشاء المثيل بأنها آمنة لسلاسل العمليات [SWS_CORE_00611]، [SWS_CORE_00612]، [SWS_CORE_00613].
مسار الاستخدام
يمتد التسلسل المعتاد من اكتشاف الخطأ مرورًا بإطلاق الاستثناء وصولاً إلى التشخيص المنظم في معالج الاستثناءات:
الإنشاء والإطلاق: يكتشف أحد المكونات حالة خطأ، وينشئ مثيلاً للاستثناء مع ErrorCode[SWS_CORE_00611] المناسب ويطرح الكائن عبر throw.
الالتقاط: تلتقط كتلة ذات مستوى أعلى الكائن بالمرجع (على سبيل المثال كـ const ara::core::Exception& أو بشكل متعدد الأشكال كـ const std::exception&).
إخراج نصي قياسي: يمكن الحصول على توضيح نصي كسلسلة منتهية بقيمة خالية (null) عبر what()[SWS_CORE_00612]. وتبقى جميع ضمانات دورة حياة std::exception::what محفوظة بالكامل في هذه العملية.
فحص مفصل للأخطاء: عبر الدالة العضو Error()، يصل المعالج إلى مرجع ثابت لـ ErrorCode المدمج [SWS_CORE_00613]، لتقييم نطاقات ورموز الأخطاء الخاصة بالنظام آليًا.
شروط دورة الحياة: يرتبط المرجع المقدَّم بواسطة Error() بكائن الاستثناء [SWS_CORE_00613]؛ ولا يجوز استخدامه بعد انتهاء دورة حياة Exception. وبالنسبة لإرجاع what()، تسري قواعد دورة الحياة الخاصة بالمكتبة القياسية [SWS_CORE_00612].
منع حالات الكائنات غير الصالحة: من خلال تغليف عمليات النسخ في نطاق protected، يتم منع تحول الفئات الفرعية متعددة الأشكال إلى حالة غير متسقة عن غير قصد بسبب الاقتطاع (Slicing) [SWS_CORE_00614]، [SWS_CORE_00618].
يستند هذا الدليل إلى مواصفة AUTOSAR Adaptive Platform الإصدار R25-11.
Return the explanatory string. This function overrides the virtual function std::exception:: what. All guarantees about the lifetime of the returned pointer that are given for std::exception::what are preserved. ≙ std::exception::
Return the explanatory string. This function overrides the virtual function std::exception:: what. All guarantees about the lifetime of the returned pointer that are given for std::exception::what are preserved.
مُولَّد بالذكاء الاصطناعيغير مُراجَعالنموذج: gemini-3.8-flash-medium · الجهد: medium · درجة الحرارة: غير قابل للتحكم · الموجّه: 1b4e9bb17f9aالمصدر
مترجم من الدليل الألمانيgemini-3.8-flash-low · 2026-10-13 · الأصل الألماني
تُستخدم الدالة العضو what للفئة ara::core::Exception للاسترداد المتزامن لسلسلة نصية توضيحية حول الخطأ الذي حدث [SWS_CORE_00612]. وتقوم بإعادة تعريف (Override) الدالة الافتراضية std::exception::what وتُرجع مؤشرًا إلى سلسلة نصية منتهية بقيمة خالية (const char*) [SWS_CORE_00612].
الاستخدام ودورة الحياة
لا تتوقع الدالة أي معلمات تمرير. وفيما يتعلق بصلاحية المؤشر المُرجع، يتم الاحتفاظ بجميع الضمانات التي تنطبق على std::exception::what[SWS_CORE_00612]. ولاستخدام الدالة، يجب تضمين ملف الترويسة ara/core/exception.h[SWS_CORE_00612].
معالجة الأخطاء والتزامن
أمان الاستثناءات: تم التصريح عن العملية كـ noexcept وحُددت بأنها آمنة من الاستثناءات (exception safe)؛ ولا تطلق هي نفسها أي استثناءات [SWS_CORE_00612].
التزامن: تم تحديد التنفيذ بأنه آمن لمؤشرات الترابط (thread-safe) [SWS_CORE_00612]. وبالتالي، يمكن إجراء الاستدعاءات بأمان من مؤشرات ترابط متوازية.
gemini-3.8-flash-low· 2026-10-13 · الأصل الألماني