مُولَّد بالذكاء الاصطناعيغير مُراجَعالنموذج: gemini-3.8-flash-medium · الجهد: medium · درجة الحرارة: غير قابل للتحكم · الموجّه: 6ef167bbc303المصدرأسئلة مفتوحة (2)
مترجم من الدليل الألمانيgemini-3.8-flash-low · 2026-10-13 · الأصل الألماني
تُستخدم الفئة ara::diag::DiagUdsNrcException كاستثناء قياسي للإشعار بأخطاء UDS NRC بواسطة فئات التشخيص لـ AUTOSAR Adaptive Platform (AUTOSAR_AP_SWS_Diagnostics §8.12.4 «Class: DiagUdsNrcException»). عند حدوث حالة خطأ مقابلة، يتم إنشاء مثيل لها مع ara::core::ErrorCode، وتُطلق ويتم التقاطها بواسطة التطبيق المستدعي لمعالجة الخطأ. كقيد أساسي، يضمن منشئها وفقًا لـ [SWS_DM_00528] أمانًا كاملًا من الاستثناءات (noexcept) بالإضافة إلى الأمان الخيطي، مما يضمن إنشاءً موثوقًا للكائن حتى في السياقات المتزامنة.
السياق
تشكل الفئة ara::diag::DiagUdsNrcException في AUTOSAR Adaptive Platform نوع الاستثناء المركزي لفئات التشخيص في الوحدة diag (AUTOSAR_AP_SWS_Diagnostics §8.12.4 «Class: DiagUdsNrcException»). وفقًا للمواصفة [SWS_DM_00527]، فإنها تحدد واجهة استثناء ++C قياسية ترث مباشرة من فئة الاستثناء الأساسية ara::core::Exception. وتتمثل مسؤوليتها الأساسية في نقل حالات الخطأ من سياق التشخيص، ولا سيما أكواد الاستجابة السلبية (Negative Response Codes, NRC) لبروتوكول UDS، كاستثناءات نمطية عبر واجهة البرمجة. تتفاعل الفئة في هذا الصدد بشكل وثيق مع ara::core::ErrorCode، الذي يغلف كود الخطأ الفعلي، ومع طبقات التطبيق المستدعية التي ترسل طلبات التشخيص ويجب عليها التقاط أي أخطاء محتملة ([SWS_DM_00528]). ومن خلال الإعلان في الترويسة ara/diag/diag_uds_nrc_error_domain.h، يرتبط الاستثناء مباشرة بنطاق خطأ UDS NRC المقابل ([SWS_DM_00528]).
تبدأ دورة حياة مثيل لـ ara::diag::DiagUdsNrcException بإنشاء مثيله صراحة بواسطة فئة تشخيص أو روتين داخلي لمعالجة الأخطاء. وفقًا لـ [SWS_DM_00528]، تمتلك الفئة منشئًا explicit DiagUdsNrcException(ara::core::ErrorCode err) noexcept;، والذي يستقبل كود الخطأ الأساسي كمعامل err. تم تعريف هذا المنشئ صراحة على أنه آمن من الاستثناءات (exception safe) وغير مطلق للاستثناءات (noexcept) ([SWS_DM_00528])، مما يضمن عدم إمكانية حدوث استثناءات ثانوية أثناء إنشاء الكائن في مسار الخطأ. بالإضافة إلى ذلك، تم تصنيف الإنشاء وفقًا لـ [SWS_DM_00528] على أنه آمن خيطيًا (thread-safe). بعد الإنشاء، يتم عادةً إطلاق مثيل الاستثناء بالقيمة عبر نظام تشغيل ++C. تظل ملكية الكائن أثناء الـ stack unwinding لدى بيئة التشغيل، حتى يتم ربط الاستثناء وتقييمه في كتلة catch المقابلة. ومع مغادرة كتلة معالجة الاستثناء، تنتهي دورة حياة الكائن من خلال التدمير المنتظم.
مسار الاستخدام
يشمل مسار الاستخدام النموذجي اكتشاف خطأ UDS NRC، وإنشاء الاستثناء، وتقييمه لاحقًا بواسطة التطبيق:
يستدعي مكون تطبيق دالة تشخيص أو واجهة خدمة لفئة ara::diag.
تكتشف فئة التشخيص أثناء المعالجة أنه لا يمكن خدمة الطلب بنجاح ووجود UDS NRC، وبناءً على ذلك تنشئ ara::core::ErrorCode المقابل.
مع تمرير كود الخطأ هذا، يتم إنشاء مثيل للاستثناء ara::diag::DiagUdsNrcException عبر منشئه ([SWS_DM_00528]).
يلتقط التطبيق المستدعي الاستثناء إما بنوعه المحدد كـ ara::diag::DiagUdsNrcException ([SWS_DM_00527]) أو بتعددية الأشكال عبر الفئة الأساسية ara::core::Exception ويصل إلى معلومات الخطأ.
بما أن ara::diag::DiagUdsNrcException هي بحد ذاتها وسيلة للإبلاغ عن الأخطاء، فإن سيناريوهات الأخطاء تتعلق أساساً بالمتانة والتزامن أثناء إنشاء الاستثناء:
إنشاء كائن متين: من خلال التحديد كـ noexcept وexception safe ([SWS_DM_00528])، يتم استبعاد إطلاق استثناء ثانوي أثناء الإنشاء. يمنع ذلك حالات الإنهاء غير الطبيعي القاتلة في وقت التشغيل مثل std::terminate في مسارات معالجة الأخطاء الحرجة.
صلاحية رمز الخطأ: كشرط مسبق لإنشاء النسخة، يجب أن يتوفر ara::core::ErrorCode صالح ([SWS_DM_00528]). ينشأ هذا عادةً من مجال الخطأ المحدد بواسطة ara/diag/diag_uds_nrc_error_domain.h.
معالجة التشخيص المتوازية: بما أن المنشئ محدد كـ thread-safe ([SWS_DM_00528])، يُسمح لعدة مسارات ترابط بإنشاء استثناءات التشخيص بالتزامن دون حدوث حالات سباق أثناء تهيئة كائن الاستثناء.
تم إنشاء هذا الدليل بواسطة نظام ذكاء اصطناعي بناءً على مواصفة AUTOSAR R25-11.
مخطط الفئات UML
Hohle Dreieckspfeile = Vererbung (zeigt zur Basisklasse); Klicken öffnet die jeweilige Klassenseite.
gemini-3.8-flash-low· 2026-10-13 · الأصل الألماني