يُستخدم لتغليف رموز أخطاء التشخيص وتمريرها كاستثناء C++ إلى مستدعي الدوال الأعلى.
مُولَّد بالذكاء الاصطناعيغير مُراجَعالنموذج: gemini-3.8-flash-medium · الجهد: medium · درجة الحرارة: غير قابل للتحكم · الموجّه: 61473cb95c98المصدرأسئلة مفتوحة (2)
مترجم من الدليل الألمانيgemini-3.8-flash-low · 2026-10-13 · الأصل الألماني
يُستخدم لتغليف رموز أخطاء التشخيص وتمريرها كاستثناء C++ إلى مستدعي الدوال الأعلى.
تعمل الفئة ara::diag::DiagException كنوع استثناء متخصص للإشارة إلى الأخطاء الصادرة عن فئات التشخيص في AUTOSAR Adaptive Platform ([SWS_DM_00515]). وهي تغلف ara::core::ErrorCode ويتم طرحها عند حدوث أخطاء داخلية لتمرير حالات الخطأ بشكل منظم إلى التطبيقات المستدعية ([SWS_DM_00516]). تم التصريح عن المُنشئ الخاص بها بأنه آمن لمؤشرات الترابط وآمن من الاستثناءات بواسطة noexcept ([SWS_DM_00516]).
السياق
تشكل الفئة ara::diag::DiagException نوع الاستثناء المركزي لمجموعة الوظائف Diagnostics في AUTOSAR Adaptive Platform (SWS Diagnostics §8.11.4 «Class: DiagException»، [SWS_DM_00515]). وهي مشتقة مباشرة من الفئة الأساسية ara::core::Exception وتكون مسؤولة عن الإبلاغ عن حالات الخطأ التي تحدث داخل فئات التشخيص إلى المستدعي في الحالات الاستثنائية. أطراف التفاعل الأساسية هي فئات التشخيص الموفرة داخل ara::diag، والتي تشير إلى الحالات الاستثنائية، بالإضافة إلى برمجيات التطبيق المستخدمة التي تطلب عمليات التشخيص وتلتقط الاستثناءات المحتملة. ومن خلال التصريح عنها في ملف الترويسة ara/diag/diag_error_domain.h، ترتبط فئة الاستثناء ارتباطاً مباشراً بنطاقات الأخطاء الخاصة بالتشخيص ([SWS_DM_00516]).
دورة الحياة
يتم إنشاء مثيل لـ ara::diag::DiagException عن طريق تمرير رمز خطأ من النوع ara::core::ErrorCode إلى المُنشئ ([SWS_DM_00516]). تم تعريف هذا المُنشئ كـ explicit، مما يمنع التحويلات الضمنية للأنواع من رموز الأخطاء. بالإضافة إلى ذلك، تم التصريح عن الإنشاء بأنه noexcept، مما يضمن أمان الاستثناءات ("exception safe") أثناء إنشاء الكائن ويمنع طرح استثناء آخر أثناء إطلاق حالة استثنائية ([SWS_DM_00516]). يُضمن أمان مؤشرات الترابط ("thread-safe") لاستدعاء المُنشئ ([SWS_DM_00516]). وفيما يتعلق بدورة الحياة الإضافية، يظل كائن الاستثناء موجوداً طوال مدة عملية تفكيك مكدس الاستدعاءات (Stack Unwinding) حتى اكتمال كتلة catch المقابلة (تفسير: تتبع ملكية كائن الاستثناء وتدميره الآليات القياسية لبيئة تشغيل C++). سؤال Q-ae485b4ea411b187 (مفتوح)
مسار الاستخدام
يمتد مسار الاستخدام العادي لـ ara::diag::DiagException من اكتشاف حالة خطأ في النظام الفرعي للتشخيص إلى التقييم بواسطة مستوى التطبيق. يوضح التسلسل التالي تفاعل المكونات المعنية:
مخطط التسلسل: المسار النموذجي عند حدوث DiagException وطرحها ومعالجتها. المصادر: [SWS_DM_00515]، [SWS_DM_00516].
يبدأ التطبيق أولاً عملية على فئة وظيفية في الوحدة ara::diag. وإذا حدث شرط أثناء المعالجة يستبعد مسار الإرجاع العادي، تنشئ فئة التشخيص مثيلاً من ara::diag::DiagException مع تحديد ara::core::ErrorCode المعني ([SWS_DM_00516]). يتم طرح هذا الاستثناء عبر آلية استثناءات C++ العادية. يلتقط مثيل التطبيق المستدعي الكائن في معالج استثناءات محدد النوع لبدء إجراءات الاسترداد أو التسجيل المناسبة.
سيناريوهات الأخطاء
باعتبارها فئة للإشارة إلى الأخطاء، تخدم ara::diag::DiagException أساساً تمرير حالات أخطاء التشخيص. الشرط المسبق للإنشاء الناجح هو توفير معلمة مهيأة err من النوع ara::core::ErrorCode ([SWS_DM_00516]). يضمن أمان الاستثناءات للمُنشئ عدم إطلاق استثناءات ثانوية في مسار الإنشاء حتى في المواقف الحرجة من حيث الموارد ([SWS_DM_00516]). بعد إنشاء المثيل بنجاح، يغلف الكائن رمز الخطأ الممرر بالكامل (تفسير: يُرجح فحص رمز خطأ التشخيص الفعلي عبر الآليات الأساسية الموروثة لـ ara::core::Exception بواسطة منطق التطبيق الملتقط). سؤال Q-d20a61b72951321b (مفتوح)
تم تنسيق هذا الدليل بواسطة ذكاء اصطناعي استناداً إلى مواصفة AUTOSAR AP R25-11.
مخطط الفئات UML
Hohle Dreieckspfeile = Vererbung (zeigt zur Basisklasse); Klicken öffnet die jeweilige Klassenseite.
gemini-3.8-flash-low· 2026-10-13 · الأصل الألماني