DEENESPTFRRUARHIKOZHNL

فئة ara::diag::DiagReportingException

[SWS_DM_00987] Upstream: RS_AP_00119

class DiagReportingException :              public ara::core::Exception {...};

Exception type thrown by Diag classes.

Header-Datei#include "ara/diag/diag_error_domain.h"
Forwarding-Header#include "ara/diag/diag_fwd.h"
Scopenamespace ara::diag
Basisklasse(n)ara::core::Exception

دليل المستخدممولَّد بالذكاء الاصطناعي

يُشعر بالأخطاء في عمليات التشخيص تزامنيًا كاستثناء مع كود خطأ إلى المستدعي.
مُولَّد بالذكاء الاصطناعي غير مُراجَع النموذج: gemini-3.8-flash-medium · الجهد: medium · درجة الحرارة: غير قابل للتحكم · الموجّه: a149cf644e7f المصدر أسئلة مفتوحة (2)
مترجم من الدليل الألمانيgemini-3.8-flash-low · 2026-10-13 · الأصل الألماني

يُشعر بالأخطاء في عمليات التشخيص تزامنيًا كاستثناء مع كود خطأ إلى المستدعي.

تُستخدم فئة الاستثناء ara::diag::DiagReportingException للإشعار المتزامن بحالات الخطأ التي تحدث أثناء العمليات داخل فئات التشخيص لـ Adaptive Platform (AUTOSAR_AP_SWS_Diagnostics §8.11.8 «Class: DiagReportingException»). يتم إنشاء مثيل لها صراحة مع ara::core::ErrorCode محدد وتنقل هذا الكود لتحليل أسباب الخطأ إلى التطبيق المستدعي [SWS_DM_00988]. كقيد مركزي، تم تحديد منشئها كـ noexcept، وexception safe وthread-safe، مما يضمن إنشاءً خاليًا من الأخطاء حتى في سياقات التنفيذ المتزامنة. يجب تجنب المثيلات غير المعالجة، لأنها تؤدي إلى إنهاء فوري للبرنامج.

السياق

تشكل الفئة ara::diag::DiagReportingException فئة الاستثناء المركزية لعمليات الإبلاغ والتقرير داخل الكتلة الوظيفية Diagnostics (AUTOSAR_AP_SWS_Diagnostics §8.11.8 «Class: DiagReportingException»). تم تعريفها كتخصيص علني لـ ara::core::Exception وتمثل حالات خطأ محددة تحدث أثناء التفاعل مع فئات التشخيص [SWS_DM_00987]. في تطبيق AUTOSAR Adaptive، يعمل الاستثناء كحلقة وصل بين خدمات التشخيص الداخلية وبرمجيات التطبيق المستدعية: إذا حدث خطأ أثناء إبلاغ تشخيصي، فإن DiagReportingException يغلف هذه الحالة وينقلها تزامنيًا عبر مكدس الاستدعاءات إلى المستدعي. تشمل أطراف التفاعل الأساسية فئات API المتعلقة بالتشخيص للوحدة diag، والتي تنشئ مثيلًا للاستثناء وتطلقه في حالة الخطأ، بالإضافة إلى روتينات معالجة الأخطاء ذات المستوى الأعلى في التطبيق، والتي تلتقط خطأ التشخيص وتعالجه.

دورة الحياة

يتم إنشاء مثيل لـ ara::diag::DiagReportingException صراحة من خلال تمرير كود خطأ من النوع ara::core::ErrorCode إلى المنشئ [SWS_DM_00988]. يمنع إعلان المنشئ كـ explicit التحويلات الضمنية لأكواد الأخطاء إلى كائنات استثناء ويضمن دائمًا إنشاء مثيلات الاستثناء بشكل متعمد [SWS_DM_00988].

بما أن المنشئ مزود بالمواصفة noexcept، فإنه يُضمن عدم إمكانية حدوث استثناءات أخرى أثناء إنشاء الكائن نفسه [SWS_DM_00988]. هذا أمر ضروري لمسارات الأخطاء، لمنع توالي الاستثناءات أثناء معالجة الأخطاء. بالإضافة إلى ذلك، تم تصنيف عملية الإنشاء صراحة على أنها آمنة من الاستثناءات (exception safe) وآمنة خيطيًا (thread-safe) [SWS_DM_00988]. وبالتالي يمكن لخيوط متعددة إنشاء كائنات استثناء منفصلة بالتوازي وبدون حالات إعاقة متبادلة.

ترتبط دورة حياة الاستثناء بعملية C++ stack unwinding: بعد الإنشاء على مكدس الاستدعاءات، يتم تمرير الكائن عبر آلية throw إلى كتلة catch المسؤولة. ومع مغادرة معالج الاستثناء، تنتهي دورة حياة الكائن، ويتم تحرير الموارد المشغولة تلقائيًا.

مسار الاستخدام

يبدأ مسار الاستخدام المنتظم بمجرد فشل إبلاغ أو عملية تشخيصية داخل Adaptive Platform. في المسار النموذجي، تكتشف فئة التشخيص المنفذة حالة غير مسموح بها وتنشئ ara::core::ErrorCode المناسب. وبدلًا من مجرد تمرير الخطأ كقيمة إرجاع، يتم في مسار الاستثناء المتزامن إنشاء كائن من النوع ara::diag::DiagReportingException وإطلاقه [SWS_DM_00987].

معالجة الاستثناء باستخدام DiagReportingExceptionالتطبيقara::diag KomponenteDiagReportingExceptionDiagnoseoperation aufrufenFehlerzustand erkennenara::core::ErrorCode erzeugenإنشاء باستخدام ErrorCodeإطلاق استثناء (throw)catch (const DiagReportingException&)Fehlercode auswerten

مخطط تسلسلي: المسار النموذجي لإنشاء الاستثناء ومعالجة الخطأ مع DiagReportingException. المصادر: [SWS_DM_00987]، [SWS_DM_00988]، AUTOSAR_AP_SWS_Diagnostics §8.11.8 «Class: DiagReportingException».

في جانب المستلم، يلتقط المنطق التطبيقي الاستثناء. يحدث هذا ويفضل أن يكون عبر مرجع لكائنات ثابتة (const ara::diag::DiagReportingException& أو بتعددية الأشكال عبر const ara::core::Exception&). بعد ذلك، يستخرج المعالج كائن ara::core::ErrorCode المضمن لتحديد السبب الدقيق للخطأ وبدء تدابير استعادة ملائمة للموقف.

سيناريوهات الأخطاء

تتعلق سيناريوهات الخطأ المرتبطة بـ ara::diag::DiagReportingException أساسًا بتفسير بيانات الخطأ الممررة وغياب المعالجة السليمة للاستثناء.

يتطلب المنشئ إلزاميًا ara::core::ErrorCode صالحًا [SWS_DM_00988]. من خلال تضمين ملف الترويسة ara/diag/diag_error_domain.h [SWS_DM_00988]، يُرجح أن كود الخطأ الممرر ينبع أساسًا من نطاق خطأ التشخيص المحدد. سؤال Q-cb8a197542857807 (مفتوح) يكمن سيناريو الخطأ الأساسي في بنية التطبيق في الالتقاط غير الكامل للاستثناء: إذا لم تتم معالجة DiagReportingException المُطلق على طول مكدس الاستدعاءات عبر كتلة catch مناسبة، فإن ذلك يؤدي حتمًا إلى استدعاء std::terminate وبالتالي إلى انهيار عملية المنصة المعنية. وبما أن المنشئ نفسه مُعلن كـ noexcept [SWS_DM_00988]، فلا يمكن أن يفشل إنشاء مثيل الاستثناء بسبب نقص داخلي في الموارد. لذلك، يجب على المطورين التأكد من أن المكونات المستدعية مهيأة لحدوث DiagReportingException، خاصة عند استخدام واجهات برمجة تطبيقات (APIs) تُشعر بالأخطاء عبر استثناءات بدلًا من ara::core::Result.

تم إنشاء هذا الدليل بواسطة ذكاء اصطناعي بالاستناد إلى مواصفة AUTOSAR Adaptive R25-11.

مخطط الفئات UML

Hohle Dreieckspfeile = Vererbung (zeigt zur Basisklasse); Klicken öffnet die jeweilige Klassenseite.

G nara__diag__DiagReportingException911 DiagReportingException + DiagReportingException() nara__core__Exception792 Exception nara__diag__DiagReportingException911->nara__core__Exception792 nstd__exception10 std::exception nara__core__Exception792->nstd__exception10

المُنشئات والمُتلف

Construct a new DiagException from an ErrorCode.

explicit DiagReportingException (ara::core::ErrorCode err) noexcept;

توثيق الدوال

دالة DiagReportingException [SWS_DM_00988] Upstream: RS_AP_00119

explicit DiagReportingException (ara::core::ErrorCode err) noexcept;

Construct a new DiagException from an ErrorCode.

Header-Datei#include "ara/diag/diag_error_domain.h"
Scopeclass ara::diag::DiagReportingException
Exception-Sicherheitexception safe
Thread-Sicherheitthread-safe

Parameter (in)

ParameterBeschreibung
errthe ErrorCode

Request a governed re-review of this record. The record is not changed immediately.

Record
AUTOSAR/AP/record/SWS_DM_00988
Status
valid/unmigrated
Version
AUTOSAR/AP/record/SWS_DM_00988@rel:R25-11#da6e8961
Content hash
da6e8961
Source
https://www.autosar.org/fileadmin/standards/R25-11/AP/AUTOSAR_AP_SWS_Diagnostics.pdf#nameddest=SWS_DM_00988
Status: valid/unmigrated Version: rel:R25-11#9465de9a Versionshistorie & Revisions (1 transition, 4 revision)
Current State
valid/unmigrated
Reason
mechanically backfilled by migriere_status_backfill.py -- no per-field curation history exists yet for this record
Campaign
2026-08-13-status-backfill
Active Version
AUTOSAR/AP/record/SWS_DM_00988@rel:R25-11#9465de9a
Point-in-Time History:
Recorded Revisions (4):
  • R25-11rel:R25-11#431097f22026-09-30
  • R23-11rel:R23-11#85d295e12026-10-14
  • R24-11rel:R24-11#9465de9a2026-10-14
  • R25-11rel:R25-11#9465de9a2026-10-14 active
DateActorTransitionReason / RationaleCampaign
2026-08-13toolnone → valid/unmigratedmechanically backfilled by migriere_status_backfill.py -- no per-field curation history exists yet for this record2026-08-13-status-backfill