يُستخدم كنوع استثناء للإبلاغ عن أخطاء Core ويغلف رمز خطأ لمعالجة منظمة للاستثناءات.
مُولَّد بالذكاء الاصطناعيغير مُراجَعالنموذج: gemini-3.8-flash-medium · الجهد: medium · درجة الحرارة: غير قابل للتحكم · الموجّه: 2b622ea04d25المصدرأسئلة مفتوحة (2)
مترجم من الدليل الألمانيgemini-3.8-flash-low · 2026-10-13 · الأصل الألماني
يُستخدم كنوع استثناء للإبلاغ عن أخطاء Core ويغلف رمز خطأ لمعالجة منظمة للاستثناءات.
تُستخدم الفئة ara::core::CoreException كنوع استثناء مركزي لنقل الأخطاء من النطاق الوظيفي ara::core وتشتق لهذه الغاية من الفئة الأساسية Exception. ويتم إنشاء المثيل إلزامياً عبر منشئ الفئة مع تمرير ErrorCode محدد يغلف سبب الخطأ [SWS_CORE_05212]. وكتحديد ظرفي أساسي، يضمن التنفيذ أماناً كاملاً للخيوط (thread safety) وأماناً من الاستثناءات (exception safety) بالإضافة إلى ضمانة noexcept بلا استثناء عند الإنشاء [SWS_CORE_05212]. ويلتقط المستدعون الاستثناء لمعالجة حالة الخطأ المتضمنة بصورة منضبطة.
السياق
تُستخدم الفئة ara::core::CoreException كنوع استثناء مركزي للأخطاء التي تحدث داخل النطاق الوظيفي ara::core. ووفقاً للتصريح عن الفئة، فإنها تشتق بشكل عام من الفئة الأساسية Exception. وتتمثل المهمة الأساسية لـ CoreException في تحويل حدث خطأ طارئ، موصوف بواسطة كائن ErrorCode، إلى نموذج معالجة الاستثناءات في C++. وبذلك تعمل الفئة في سياق المنصة كجسر بين مكوّن البنية التحتية الذي يكتشف الأخطاء وبين كود التطبيق أو كود المنصة المستدعي. وعندما تفشل عملية في ara::core وتنص الواجهة على إطلاق استثناء، يتم إنشاء مثيل لـ CoreException والإشارة إليه. وفي هذه الأثناء، يستقبل منشئ الفئة وفقاً لـ [SWS_CORE_05212] كائناً محدداً من النوع ErrorCode، والذي يغلف السبب الوظيفي ومجال الخطأ الذي حدث. ويتيح التضمين في التسلسل الهرمي للفئات لطبقات البنية الأعلى التقاط الأخطاء إما بشكل محدد كـ CoreException أو معالجتها بشكل عام عبر الفئة الأساسية Exception.
مخطط السياق: علاقة CoreException بـ ErrorCode والفئة الأساسية Exception. المصادر: [SWS_CORE_05212]
دورة الحياة
تبدأ دورة حياة مثيل CoreException في سياق اكتشاف الخطأ. ويتم الإنشاء عبر منشئ الفئة explicit CoreException(ErrorCode err) noexcept وفقاً لـ [SWS_CORE_05212]. وبواسطة الكلمة المفتاحية explicit، يتم منع التحويل الضمني من ErrorCode، بحيث يُفرض إنشاء صريح للكائن. وتتمثل سمة أساسية في البناء في التحديد كـ noexcept[SWS_CORE_05212]: لا يمكن لإنشاء المثيل نفسه إطلاق استثناءات إضافية، مما يضمن توليداً موثوقاً للاستثناء حتى في حالات النظام الحرجة. علاوة على ذلك، يُصنف أمان الاستثناءات بأنه آمن تماماً (exception safe) وتُعد العملية آمنة بالنسبة للخيوط (thread-safe) [SWS_CORE_05212]. وبعد الإنشاء، يتم عادةً تمرير كائن الاستثناء بواسطة throw. وأثناء تفكيك مكدس الاستدعاءات (Stack Unwinding)، يتم نقل الاستثناء حتى يتم ربطه بمعالج استثناءات مناسب. وتنتهي دورة الحياة بمغادرة الكتلة الملتقطة، وعندها يتم تدمير كائن الاستثناء بشكل حتمي.
مسار الاستخدام
ينقسم مسار الاستخدام العادي لـ CoreException إلى ثلاث مراحل متتالية: التشخيص، والرمي، والالتقاط. في البداية، يحدد مكوّن من الوحدة core انحرافاً عن السلوك المستهدف وينشئ مثيلاً لـ ErrorCode المناظر. وبعد ذلك، يتم إنشاء الاستثناء من خلال استدعاء منشئ الفئة CoreException(err)[SWS_CORE_05212]. ومباشرةً بعد ذلك، يتم رمي الكائن في سياق التنفيذ. وعلى مستوى التطبيق، يتم تنفيذ الاستدعاء في كتلة محمية. وإذا حدثت حالة الاستثناء، تلتقط كتلة catch المثيل – عادةً كمرجع ثابت إلى CoreException أو بشكل متعدد الأشكال عبر الفئة الأساسية Exception. وفي المعالج، يمكن تحليل الخطأ أو تسجيله أو إصلاحه. ونظراً لأن ملف الترويسة #include "ara/core/core_error_domain.h" محدد وفقاً لـ [SWS_CORE_05212]، فإن التصريح عن الفئة متاح بشكل متسق لوحدات التطبيق.
سيناريوهات الأخطاء
في نطاق سيناريوهات الأخطاء، تعمل CoreException نفسها كحامل إشارة ولا ترمي أخطاء ثانوية أثناء إنشائها. ونظراً لأن منشئ الفئة مصرح به كـ noexcept[SWS_CORE_05212]، فإن سيناريو فشل البناء مستبعد. وتضمن المواصفة أماناً صارماً من الاستثناءات وأماناً للخيوط [SWS_CORE_05212]، بحيث يظل الوصول المتزامن أثناء الإنشاء آمناً ودون قلق. وينشأ سيناريو خطأ حرج على مستوى النظام عندما لا يتم التقاط CoreException المرمي من قِبل أي نطاق أعلى، وهو ما يُتوقع أن يؤدي في C++ القياسية إلى استدعاء std::terminate. سؤال Q-492683ca01bebc7d (مفتوح) لذلك يجب على المطورين التأكد من أن استدعاءات دوال ara::core المحتمل رميها للاستثناءات مضمنة في كتل مناسبة لمعالجة الاستثناءات. ويتعلق سيناريو محتمل آخر بالتمرير عبر حدود المكونات، حيث يجب تفسير ErrorCode المتضمن بشكل صحيح لبدء إجراءات ملائمة لتصحيح الأخطاء.
تم إنشاء هذا الدليل بواسطة مساعد تنسيق ذكاء اصطناعي بناءً على AUTOSAR R25-11.
مخطط الفئات UML
Hohle Dreieckspfeile = Vererbung (zeigt zur Basisklasse); Klicken öffnet die jeweilige Klassenseite.
gemini-3.8-flash-low· 2026-10-13 · الأصل الألماني