يُحدّد مجال الخطأ الخاص بوحدة الاستمرارية لتوفير رموز الأخطاء والأوصاف النصية والاستثناءات.
مُولَّد بالذكاء الاصطناعيغير مُراجَعالنموذج: gemini-3.8-flash-medium · الجهد: medium · درجة الحرارة: غير قابل للتحكم · الموجّه: da81ed3d3cb6المصدرأسئلة مفتوحة (1)
مترجم من الدليل الألمانيgemini-3.8-flash-low · 2026-10-13 · الأصل الألماني
يُحدّد مجال الخطأ الخاص بوحدة الاستمرارية لتوفير رموز الأخطاء والأوصاف النصية والاستثناءات.
تُحدّد الفئة ara::per::PerErrorDomain مجال الخطأ الخاص بوحدة الاستمرارية وتربط رموز الأخطاء برسائل وصفية وأنواع استثناءات [SWS_PER_00411]. وهي تتيح عبر واجهات آمنة خيطيًا الاستعلامَ عن اسم المجال وترجمة أوصاف الأخطاء لقيم أخطاء محددة. وعند الحاجة، تقوم بتحويل الأخطاء عبر ThrowAsException() إلى استثناءات C++ [SWS_PER_00350]. وفي حال تعطيل الاستثناءات في حزمة أدوات المترجم، فإن دالة الإطلاق هذه لا تكون متاحة، مما يفرض إجراء فحص الأخطاء بالاعتماد التام على قيم الإرجاع.
السياق
تُحدّد الفئة ara::per::PerErrorDomain مجال الخطأ الخاص بوحدة الاستمرارية (Persistency) ضمن AUTOSAR Adaptive Platform. وهي ترث من تعريف النوع الأساسي ara::core::ErrorDomain ومُصرّح عنها كـ final، لتشكل بذلك الأساس للمعالجة المميّزة بالنوع للأخطاء وتعيين الأخطاء لكافة العمليات المتعلقة بالاستمرارية. وعبر الأسماء البديلة القياسية للأنواع Errc[SWS_PER_00411] لتعداد رموز الأخطاء الأساسي PerErrc وException[SWS_PER_00412] للفئة الأساسية للاستثناء الخاصة بالوحدة PerException، تربط الفئة بين قيم الأخطاء العددية ورسائل الخطأ الواضحة وكائنات استثناءات C++ الملموسة. وفي معمارية المنصة، يتفاعل مجال الخطأ تفاعلاً وثيقًا مع خدمات Persistency ومجموعات الوظائف المستدعية وبنى النتائج والأخطاء العامة من ara::core.
دورة الحياة
يتم إنشاء المثيل عبر المنشئ الافتراضي القياسي PerErrorDomain()[SWS_PER_00313]. هذا المنشئ مُصرّح عنه كـ noexcept، وهو آمن استثنائيًا (exception safe) وآمن خيطيًا (thread-safe) بالكامل. تفسير: يُرجّح أن يُدار مثيل PerErrorDomain عادةً ككائن طويل الأمد أو كائن عام، لضمان إجراء مقارنات متسقة للمجال وترجمة أنواع أخطاء Persistency طوال فترة التشغيل. سؤال Q-5d90982fddec40a7 (مفتوح) ونظرًا لتصنيف كافة عمليات الاستعلام في الفئة بأنها آمنة خيطيًا أيضًا، يمكن لعدة خيوط الوصول بشكل متوازٍ إلى مثيل المجال نفسه دون الحاجة إلى آليات مزامنة إضافية على مستوى جهة الاستدعاء.
مسار الاستخدام
يتضمن مسار الاستخدام النموذجي التعرف على المجال، والاستعلام عن معلومات تشخيصية واضحة، وإطلاق الاستثناءات اختياريًا عند حدوث أخطاء في وحدة Persistency. أولاً، تُرجع الدالة العضو Name() المعرّف الفريد لمجال الخطأ كسلسلة نصية [SWS_PER_00314]؛ وهي محددة بأنها noexcept وآمنة استثنائيًا وآمنة خيطيًا. وفي حال حدوث خطأ أثناء عملية استمرارية، يتم تحليل قيمة خطئه العددية عبر Message()[SWS_PER_00315]. تستقبل هذه الدالة رمز الخطأ العددي من النوع CodeType وتُرجع رسالة الخطأ المقترنة به كمؤشر أحرف ثابت (const char *)، وذلك أيضًا مع ضمان الأمان الاستثنائي والخيطي الكاملين.
إذا كان يلزم تحويل حالة خطأ إلى استثناء C++، تُستخدم الدالة ThrowAsException()[SWS_PER_00350]. يوضح التسلسل التالي التفاعل القائم عند الاستعلام عن الأخطاء وإطلاق الاستثناءات:
مخطط تسلسلي: المسار النموذجي لفحص الأخطاء والاستعلام عن النصوص وإطلاق الاستثناءات عبر PerErrorDomain. المصادر: [SWS_PER_00314]، [SWS_PER_00315]، [SWS_PER_00350].
سيناريوهات الأخطاء
عند الاستخدام العملي لـ ara::per::PerErrorDomain، يجب على المطورين مراعاة الضمانات المختلفة المتعلقة بمعالجة الأخطاء والأمان الاستثنائي. فبينما صُرّح عن واجهات الاستعلام Name()[SWS_PER_00314] وMessage()[SWS_PER_00315] بصرامة كـ noexcept وصُنّفت بأنها آمنة استثنائيًا، تُعد الدالة العضو ThrowAsException() غير آمنة استثنائيًا (not exception safe) [SWS_PER_00350]. ولهذا السلوك ما يبرره دلاليًا، حيث يكمن الغرض من الدالة في الإطلاق الموجّه لاستثناء يطابق رمز الخطأ (noexcept(false)).
يتعلق أحد الشروط الحدية الجوهرية بالمنصات أو تكوينات البناء التي لا تحتوي على استثناءات C++ مفعّلة: إذا كانت معالجة الاستثناءات معطلة في المترجم، فإن ThrowAsException() لا تشارك في حل التحميل الزائد وفقًا لـ [SWS_PER_00350]. وفي بيئات كهذه، يتعين على برمجيات التطبيق اللجوء إلى تقييم رموز الأخطاء عبر الأسماء البديلة المتوفرة Errc[SWS_PER_00411] والأوصاف النصية لـ Message()[SWS_PER_00315]، بدلاً من اعتراض كائنات استثناءات من النوع Exception[SWS_PER_00412].
أُنشئ هذا الدليل تلقائيًا بناءً على متطلبات مواصفات AUTOSAR.
Throws the exception associated with the error code. As per [SWS_CORE_10304], this function does not participate in overload resolution when C++ exceptions are disabled in the compiler toolchain.
Throws the exception associated with the error code. As per [SWS_CORE_10304], this function does not participate in overload resolution when C++ exceptions are disabled in the compiler toolchain.
gemini-3.8-flash-low· 2026-10-13 · الأصل الألماني