يُشعر بأخطاء التشخيص الخاصة بـ SOVD كـ Exception آمن من الاستثناءات مع كود خطأ مخصص إلى المستدعين.
مُولَّد بالذكاء الاصطناعيغير مُراجَعالنموذج: gemini-3.8-flash-medium · الجهد: medium · درجة الحرارة: غير قابل للتحكم · الموجّه: 58783cae6416المصدرأسئلة مفتوحة (2)
مترجم من الدليل الألمانيgemini-3.8-flash-low · 2026-10-13 · الأصل الألماني
يُشعر بأخطاء التشخيص الخاصة بـ SOVD كـ Exception آمن من الاستثناءات مع كود خطأ مخصص إلى المستدعين.
تُستخدم الفئة ara::diag::DiagSovdException كنوع استثناء متخصص لـ Service-Oriented Vehicle Diagnostics (SOVD) ويتم إطلاقها بواسطة فئات التشخيص في الوحدة diag للإشعار بالأخطاء [SWS_DM_01807]. وهي تشتق من ara::core::Exception ويتم إنشاء مثيل لها صراحة في حالات الخطأ مع ara::core::ErrorCode، لنقل معلومات الخطأ عبر C++ stack unwinding إلى السياق المستدعي [SWS_DM_01808]. كقيد مركزي، تم تحديد المنشئ كـ noexcept وبذلك يضمن أمانًا كاملًا من الاستثناءات بالإضافة إلى الأمان الخيطي عند إنشاء الكائن.
تشتق الفئة علنًا من الاستثناء الأساسي العام ara::core::Exception ([SWS_DM_01807]، SWS Diagnostics §8.51.4). ومن بين أطراف التفاعل المباشرة فئات التشخيص الوظيفية للوحدة diag، والتي تحلل طلبات التشخيص وتطلق استثناءات عند حدوث أخطاء، بالإضافة إلى برمجيات التطبيق المستدعية، التي يجب أن تلتقط هذه الاستثناءات وتعالجها. تم إعلان الفئة في الترويسة ara/diag/diag_sovd_error_domain.h لتلبية متطلبات معمارية أعلى مستوى ([SWS_DM_01808]، SWS Diagnostics §8.51.4.1.1.1 «DiagSovdException»).
دورة الحياة
يتم إنشاء مثيل لـ ara::diag::DiagSovdException عبر منشئ يستقبل إلزاميًا ara::core::ErrorCode كمعامل err ([SWS_DM_01808]، SWS Diagnostics §8.51.4.1.1.1). تم إعلان هذا المنشئ كـ explicit لمنع التحويلات الضمنية لأكواد الأخطاء إلى كائنات استثناء، وتم تمييزه كـ noexcept ([SWS_DM_01808]).
فيما يتعلق بالمتانة والتزامن، تضمن المواصفة أن الإنشاء آمن تمامًا من الاستثناءات (exception safe) وآمن خيطيًا ([SWS_DM_01808]). وبذلك يُضمن ألا يؤدي إنشاء الخطأ نفسه في سيناريوهات التشخيص المتزامنة إلى حدوث استثناءات أخرى أو حالات عدم اتساق. تتبع دورة حياة الاستثناء عملية stack unwinding القياسية في ++C: يتم إنشاء الكائن في حالة الخطأ داخل دالة تشخيص، وتمريره عبر مستويات الاستدعاء، وتدميره بصورة محددة عند مغادرة كتلة catch المعالجة.
مسار الاستخدام
ينقسم التسلسل النموذجي عند استخدام ara::diag::DiagSovdException إلى الخطوات التالية:
يبدأ تطبيق عملية تشخيص متعلقة بـ SOVD على واجهة للوحدة diag.
تكتشف مكونة التشخيص المسؤولة حالة خاطئة وتنشئ ara::core::ErrorCode المناسب من نطاق خطأ SOVD ([SWS_DM_01808]).
باعتبارها ناقلًا للأخطاء، تُستخدم الفئة نفسها لمعالجة الحالات الاستثنائية ([SWS_DM_01807]). كشرط مسبق شكلي للإنشاء، يلزم توفير ara::core::ErrorCode مهيأ ([SWS_DM_01808]). وبما أن المنشئ مُعلن كـ noexcept، فلا تحدث أي استثناءات أثناء إنشاء الكائن نفسه ([SWS_DM_01808]).
تفسير: يُرجح أن المثيل يغلف كود الخطأ الممرر بصفة دائمة، بحيث يمكن لمعالجات الأخطاء اللاحقة فحصه عبر دوال موروثة من ara::core::Exception. سؤال Q-332b95b96849e379 (مفتوح) في تكوينات النظام التي تم فيها تعطيل استثناءات ++C، يُرجح أن تفضل مكونة التشخيص آليات خطأ بديلة، بينما يمثل DiagSovdException المسار المخصص لمعالجة الاستثناءات.
يستند هذا الدليل إلى مواصفة AUTOSAR Adaptive Platform R25-11 ويلخص متطلبات معالجة استثناءات SOVD.
مخطط الفئات UML
Hohle Dreieckspfeile = Vererbung (zeigt zur Basisklasse); Klicken öffnet die jeweilige Klassenseite.
gemini-3.8-flash-low· 2026-10-13 · الأصل الألماني