يُستخدم لتغليف أخطاء وحدة الاستمرارية والإشارة إليها استنادًا إلى رمز خطأ محدد.
مُولَّد بالذكاء الاصطناعيغير مُراجَعالنموذج: gemini-3.8-flash-medium · الجهد: medium · درجة الحرارة: غير قابل للتحكم · الموجّه: abab05ca22f0المصدرأسئلة مفتوحة (2)
مترجم من الدليل الألمانيgemini-3.8-flash-low · 2026-10-13 · الأصل الألماني
يُستخدم لتغليف أخطاء وحدة الاستمرارية والإشارة إليها استنادًا إلى رمز خطأ محدد.
تُستخدم الفئة ara::per::PerException في AUTOSAR Adaptive Platform كنوع استثناء محدد للإشارة إلى أخطاء وحدة الاستمرارية. يتم توفيرها عبر ملف الترويسة ara/per/per_error_domain.h وترث من الفئة الأساسية ara::core::Exception[SWS_PER_00355]. يتم إنشاء الحالة صراحةً عن طريق تمرير ara::core::ErrorCode، والذي يغلّف سبب الخطأ الفعلي. من خلال الإعلان عن المنشئ كـ noexcept، يتم تحديد عملية الإنشاء على أنها آمنة تمامًا من الاستثناءات وكذلك آمنة بالنسبة للخيوط [SWS_PER_00355].
السياق
تعمل الفئة ara::per::PerException كنوع استثناء مركزي ومتخصص للعنقود الوظيفي للاستمرارية (الوحدة per) ضمن AUTOSAR Adaptive Platform في الإصدار R25-11. وفقًا لبنيتها النحوية الرسمية، فإن الفئة مشتقة علنًا من الاستثناء الأساسي العام ara::core::Exception. تتمثل مسؤوليتها الأساسية في الإشارة إلى حالات الأخطاء الجسيمة أو التي لا يمكن معالجتها مباشرة عبر قيم الإرجاع العادية من النظام الفرعي للاستمرارية إلى طبقات التطبيق الأعلى. يتم تعريف الفئة في ملف الترويسة ara/per/per_error_domain.h[SWS_PER_00355]. وفي البنية المعمارية، تتفاعل بشكل وثيق مع بنية معالجة الأخطاء التحتية للمنصة، حيث تنقل كل حالة ara::core::ErrorCode لإجراء تشخيص دقيق للخطأ [SWS_PER_00355].
دورة الحياة
ترتبط دورة حياة كائن ara::per::PerException ارتباطًا مباشرًا باكتشاف خطأ وتمريره ضمن عمليات الاستمرارية. يتم إنشاء الحالة عبر منشئ صريح يستقبل معاملًا واحدًا بالضبط من النوع ara::core::ErrorCode[SWS_PER_00355]. هذا المنشئ مُعلن كـ explicit لمنع تحويلات الأنواع الضمنية من رموز الأخطاء، ومزود بالمواصفة noexcept[SWS_PER_00355]. يضمن ذلك عدم إمكانية حدوث استثناءات أخرى أثناء إنشاء كائن الاستثناء نفسه؛ وبالتالي فإن الإنشاء آمن تمامًا من الاستثناءات (exception safe) [SWS_PER_00355].
فيما يتعلق بالتزامن، تم تحديد إنشاء ara::per::PerException على أنه آمن بالنسبة للخيوط (thread-safe) [SWS_PER_00355]. بعد استدعاء المنشئ، يتم طرح الكائن على طول مكدس الاستدعاءات. تتبع الملكية والتدمير قواعد C++ القياسية لمعالجة الاستثناءات: يظل الكائن في مساحة ذاكرة نظام وقت التشغيل حتى تنتهي كتلة catch التي قامت بالالتقاط، ثم يتم تدميره بشكل حتمي.
مسار الاستخدام
ينقسم المسار النموذجي عند استخدام ara::per::PerException إلى الخطوات التالية:
اكتشاف الخطأ وتوليد الرمز: تحدد وحدة الاستمرارية حالة غير مسموح بها أو فشل عملية تخزين وتمثل ذلك في ara::core::ErrorCode مطابق.
إنشاء الحالة: مع تمرير رمز الخطأ هذا، يتم إنشاء كائن الاستثناء صراحةً عبر PerException(errorCode)[SWS_PER_00355].
إطلاق الاستثناء: يطرح النظام الفرعي للاستمرارية حالة الاستثناء من واجهة الدالة المعنية.
الالتقاط والتقييم: يلتقط التطبيق المستدعي الكائن على وجه التحديد كـ ara::per::PerException أو بشكل متعدد الأشكال كـ ara::core::Exception أو std::exception. تفسير: يُفترض أن التطبيق يقرأ بعد ذلك ara::core::ErrorCode المغلّف عبر طرق الوصول الموروثة من الفئة الأساسية لبدء إجراءات استكشاف الأخطاء وإصلاحها المستهدفة. سؤال Q-6e48fd125d9938d8 (مفتوح)
سيناريوهات الأخطاء
نظرًا لأن ara::per::PerException تُستخدم لتمثيل الأخطاء، فإن متانة إنشاء الكائن وسلامة معلومات الخطأ تأتيان في المقدمة في سيناريوهات الأخطاء. كشرط مسبق أساسي، يتطلب المنشئ ara::core::ErrorCode صالحًا كمعامل إدخال [SWS_PER_00355]. نظرًا لأن المنشئ مُعلن كـ noexcept، فمن المستبعد حدوث استثناءات ثانوية أثناء الإبلاغ عن الخطأ [SWS_PER_00355]. بالإضافة إلى ذلك، يضمن الأمان المحدد بالنسبة للخيوط عدم حدوث أي تلف في البيانات أو آثار جانبية غير منسقة حتى في حالة وجود أخطاء متوازية في خيوط تنفيذ متعددة [SWS_PER_00355].
يستند هذا الدليل حصريًا إلى بيانات مواصفات AUTOSAR Adaptive Platform الإصدار R25-11.
مخطط الفئات UML
Hohle Dreieckspfeile = Vererbung (zeigt zur Basisklasse); Klicken öffnet die jeweilige Klassenseite.
gemini-3.8-flash-low· 2026-10-13 · الأصل الألماني