يُستخدم لتغليف الأخطاء الناتجة عن العمليات التشفيرية والإشارة إليها كاستثناء ++C محدد النوع.
مُولَّد بالذكاء الاصطناعيغير مُراجَعالنموذج: gemini-3.8-flash-medium · الجهد: medium · درجة الحرارة: غير قابل للتحكم · الموجّه: 1f6949d5652bالمصدرأسئلة مفتوحة (2)
مترجم من الدليل الألمانيgemini-3.8-flash-low · 2026-10-13 · الأصل الألماني
يُستخدم لتغليف الأخطاء الناتجة عن العمليات التشفيرية والإشارة إليها كاستثناء ++C محدد النوع.
تعمل الفئة ara::crypto::CryptoException في AUTOSAR Adaptive Platform كاستثناء مخصص للإشارة إلى أخطاء التشفير للتطبيقات المستدعية. وهي مشتقة من ara::core::Exception ويتم إنشاء مثيل لها صراحةً باستخدام ara::core::ErrorCode عند فشل العمليات [SWS_CRYPT_19906]. وبفضل تحديدها كـ noexcept وآمنة خيطيًا، يُضمن توليد استثناء موثوق حتى في البيئات المتزامنة دون أخطاء لاحقة [SWS_CRYPT_19906]. يجب على التطبيقات تأمين استدعاءات التشفير بشكل مناسب لتجنب الاستثناءات غير المعالجة والإنهاء المفاجئ للبرنامج.
السياق
تحدد الفئة ara::crypto::CryptoException نوع الاستثناء المركزي لحالات الخطأ داخل وحدة التشفير في AUTOSAR Adaptive Platform. وباعتبارها تخصيصًا لفئة الاستثناء القياسية ara::core::Exception، فإنها تسد الفجوة بين الإرجاع القائم على رموز الخطأ المستخدم بشكل أساسي في المنصة وآليات معالجة استثناءات ++C التقليدية. تُستخدم في معماريات الأنظمة التي تفشل فيها عمليات التشفير ويجب نشر حالة الخطأ هذه عبر مكدس الاستدعاء كاستثناء. تشمل أطراف التفاعل الأساسية وحدات وخدمات التشفير الوظيفية، التي تُطلق استثناءات عند حدوث أخطاء غير متوقعة أو فحوصات صريحة، بالإضافة إلى مكونات التطبيق ذات المستوى الأعلى التي تبدأ عمليات تشفيرية مثل التشفير أو التحقق من التوقيع أو إدارة المفاتيح وتلتقط أي أخطاء محتملة. ومن خلال ترسيخها في مفهوم نطاق الخطأ المشترك للمنصة، يضمن ara::crypto::CryptoException إبلاغ منطق التطبيق بأخطاء التشفير بشكل متسق ومحدد النوع.
دورة الحياة
يتم إنشاء كائن من ara::crypto::CryptoException بشكل حتمي عن طريق تمرير رمز خطأ من النوع ara::core::ErrorCode إلى المُنشئ [SWS_CRYPT_19906]. تم التصريح عن هذا المُنشئ كـ explicit لمنع تحويلات النوع الضمنية من رموز الخطأ، ولديه المواصفة noexcept[SWS_CRYPT_19906]. يضمن هذا الأخير عدم إمكانية إطلاق أي استثناءات أخرى أثناء إنشاء الاستثناء نفسه، مما يزيد بشكل جوهري من أمان الاستثناء والتشغيل للنظام الفرعي للتشفير. وفقًا للمواصفة، صُنِّف التنفيذ على أنه آمن خيطيًا (thread-safe) [SWS_CRYPT_19906]، بحيث يمكن إنشاء مثيلات ومعالجتها بشكل موثوق حتى في بيئات التنفيذ المتزامنة. فيما يتعلق بعلاقات الملكية، يُرمى الاستثناء عادةً بالقيمة (by-value) ويُربط كمرجع ثابت (const reference) في كتلة الالتقاط. وبما أن الفئة لا تدير أي موارد ديناميكية تتجاوز رمز الخطأ، فإن دورة حياتها تنتهي بشكل نظامي مع مغادرة كتلة catch المعالجة (تفسير). سؤال (مفتوح)
مسار الاستخدام
يبدأ مسار الاستخدام المنتظم داخل عملية تشفيرية عندما تنشأ حالة خطأ لا يمكن حلها محليًا. تحدد الوحدة سبب الخطأ استنادًا إلى نطاق خطأ التشفير من ملف الترويسة ara/crypto/common/crypto_error_domain.h وتنشئ ara::core::ErrorCode المطابق [SWS_CRYPT_19906]. بعد ذلك، يتم إنشاء مثيل لـ ara::crypto::CryptoException باستخدام رمز الخطأ هذا [SWS_CRYPT_19906] والإشارة إليه بواسطة عبارة throw. من جانب التطبيق، يلتقط المكون المستدعي الاستثناء بشكل هادف عبر catch (const ara::crypto::CryptoException& e). كبديل، يسمح التسلسل الهرمي للوراثة أيضًا بالالتقاط متعدد الأشكال كـ ara::core::Exception عام. ومن خلال الاستعلام عن ara::core::ErrorCode المتضمن، يمكن للتطبيق بعد ذلك تحليل سبب خطأ التشفير المحدد واتخاذ التدابير المضادة المناسبة.
مخطط تسلسلي: المسار النموذجي لمعالجة الأخطاء وإطلاق الاستثناءات في العمليات التشفيرية. المصادر: [SWS_CRYPT_19906]
سيناريوهات الأخطاء
نظرًا لأن ara::crypto::CryptoException يمثل بحد ذاته وسيلة الإشارة إلى الخطأ، فإن التركيز الأساسي في سيناريوهات الخطأ ينصب على متانة توليد الاستثناء. فمن خلال ضمان أمان الاستثناء والخيط بالإضافة إلى ضمان noexcept للمُنشئ، يُمنع حدوث استثناءات ثانوية أثناء معالجة خطأ نشطة بالفعل [SWS_CRYPT_19906]. يتمثل سيناريو خطأ محتمل في منطق التطبيق في أن ara::core::ErrorCode المُمرر يغلف نطاقات أخطاء غير متوقعة أو غير تشفيرية؛ ويُرجَّح أن يعالج الاستثناء (Exception) رمز الخطأ بشكل محايد رغم ذلك وينقله دون تغيير إلى المعالِج (تفسير). سؤال Q-0bb3376f547ce024 (مفتوح) وهناك خطر آخر على مستوى النظام يكمن في إغفال التقاط الاستثناء، مما قد يؤدي في بيئة تشغيل ++C إلى استدعاء std::terminate. لذلك، يجب على المكونات المستدعية التي تستخدم واجهات برمجة تطبيقات دون إرجاع قائم على رموز الخطأ، تأمين استدعاءات التشفير بشكل متسق باستخدام كتل catch المناسبة.
يستند هذا الدليل إلى مواصفة AUTOSAR Adaptive الإصدار R25-11. تستند جميع البيانات حصرًا إلى بيانات المواصفة المقدمة حول ara::crypto::CryptoException.
مخطط الفئات UML
Hohle Dreieckspfeile = Vererbung (zeigt zur Basisklasse); Klicken öffnet die jeweilige Klassenseite.
gemini-3.8-flash-low· 2026-10-13 · الأصل الألماني