مُولَّد بالذكاء الاصطناعيغير مُراجَعالنموذج: gemini-3.8-flash-medium · الجهد: medium · درجة الحرارة: غير قابل للتحكم · الموجّه: 72647117def3المصدرأسئلة مفتوحة (1)
مترجم من الدليل الألمانيgemini-3.8-flash-low · 2026-10-13 · الأصل الألماني
تُستخدم الفئة ara::sm::SmException لتمرير الحالات الاستثنائية التي تطرأ أثناء عمليات State Management [SWS_SM_81242]. تُشتق الفئة من ara::core::Exception وتغلف ara::core::ErrorCode محدداً للتعريف الدقيق بسبب الخطأ الذي حدث. يتم إنشاؤها عبر منشئ صريح حُدد على أنه آمن خيطياً (Thread-safe) وآمن استثنائياً (Exception-safe) [SWS_SM_81243]. تلتقط التطبيقات المستدعية الكائن بشكل منظم لتحليل رمز الخطأ المتضمن وبدء تدابير الاستعادة المناسبة.
السياق
تعمل الفئة ara::sm::SmException كاستثناء مركزي لمجموعة الوظائف (Functional Cluster) State Management في AUTOSAR Adaptive Platform [SWS_SM_81242]. تم تعريفها في ملف الترويسة ara/sm/sm_error_domain.h وتُشتق علناً من فئة استثناء المنصة الأساسية ara::core::ExceptionAUTOSAR_AP_SWS_StateManagement §8.1.4 «Class: SmException». وتُدرج مواصفة الفئة داخل الوثيقة بالحالة DRAFT [SWS_SM_81242].
في السياق المعماري، تجمع الفئة بين ثلاثة أدوار رئيسية: State Management كجهة مُطلقة للاستثناء عند فشل عمليات الحالة، وتطبيق Adaptive المستدعي كجهة معالجة، والبنية التحتية الأساسية لـ ara::core التي توفر الواجهة المشتركة لمعالجة الأخطاء. وبصفتها حاملاً لحالات الخطأ، فإنها تُستخدم لتمرير حالات الخطأ من الوحدة sm تزامناً عبر آلية استثناءات C++ إلى جهات التحكم العليا.
دورة الحياة
تتم تهيئة ara::sm::SmException صراحةً عبر المنشئ SmException(ara::core::ErrorCode errorCode)[SWS_SM_81243]. تم التصريح عن هذا المنشئ كـ noexcept ويتميز بخاصيتي الأمان الاستثنائي (exception safe) والأمان الخيطي (thread-safe) AUTOSAR_AP_SWS_StateManagement §8.1.4.1.1.1 «SmException». يضمن ذلك ألا يفشل إنشاء كائن الاستثناء نفسه أو يطلق استثناءات إضافية، حتى لو تم إنشاؤه في سياقات تنفيذ متزامنة.
بعد الإنشاء، يتم إطلاق النسخة عادةً بالقيمة (by value) وتُلتَقط في سياق الاستدعاء كمرجع لكائنات ثابتة (const ara::sm::SmException& أو بتعدد الأشكال كـ const ara::core::Exception&). وبما أن المواصفة لا تحدد دوال هدم (Destructors) خاصة أو إجراءات تنظيف يدوية، يُرجح وفقاً للتفسير أن يتبع تدمير كائن الاستثناء دلالات C++ القياسية وآليات الفئة الأساسية ara::core::Exception بالكامل بمجرد الخروج من كتلة المعالجة المعنية. سؤال Q-85b1fd2f6082db8e (مفتوح)
مسار الاستخدام
يبدأ المسار النموذجي عند إرسال مكون تطبيقي أو مكون منصة طلباً للتحكم في الحالة إلى State Management. إذا تعذر تنفيذ تغيير الحالة المطلوب داخلياً أو حدث خطأ استثنائي جسيم، تنشئ State Management نسخة من ara::sm::SmException مع تحديد ara::core::ErrorCode المقابل [SWS_SM_81243].
مخطط تسلسلي: الإشعار النموذجي بخطأ ومعالجته باستخدام SmException في State Management. المصادر: [SWS_SM_81242]، [SWS_SM_81243].
يلتقط المكون المستدعي الاستثناء المُطلق في كتلة catch المقابلة. عبر الدوال الموروثة من الفئة الأساسية ara::core::Exception، يستطيع التطبيق فحص ara::core::ErrorCode المغلف لتحديد سبب الخطأ دلالياً واتخاذ تدابير موجهة لإصلاح الخطأ أو استعادة حالة النظام.
سيناريوهات الأخطاء
لا تمثل الفئة ara::sm::SmException بحد ذاتها عنصراً تشغيلياً عرضة للخطأ، بل هي الكائن الحامل الأساسي للحالات الاستثنائية ضمن State Management [SWS_SM_81242]. ويتمثل الشرط المسبق الجوهري لإنشائها في توفير كائن ara::core::ErrorCode مهيأ عند استدعاء المنشئ [SWS_SM_81243].
إذا لم يلتقط أي معالج مناسب ara::sm::SmException المُطلق في مكدس الاستدعاءات، يؤدي ذلك وفقاً لقواعد C++ القياسية إلى استدعاء std::terminate وبالتالي إلى الإنهاء غير المنضبط للعملية المعنية. وفي التنفيذات التي تشترط الاستغناء عن الاستثناءات لصالح ara::core::Result، يتم تجنب الإطلاق؛ أما إذا كان مسار الاستثناءات متاحاً، فإن التغليف يضمن نقل رمز الخطأ الأصلي دون تحريف لأغراض تشخيص الخطأ.
يعتمد دليل الفئة هذا على مواصفة AUTOSAR Adaptive R25-11. وتستند جميع البيانات إلى نقاط المواصفة المشار إليها.
مخطط الفئات UML
Hohle Dreieckspfeile = Vererbung (zeigt zur Basisklasse); Klicken öffnet die jeweilige Klassenseite.
gemini-3.8-flash-low· 2026-10-13 · الأصل الألماني