डायग्नोस्टिक्स वर्गों में UDS-NRC त्रुटियों को संकेतित करने और आगे प्रसारित करने के लिए थ्रेड-सुरक्षित अपवाद के रूप में कार्य करता है।
एआई-जनितअसत्यापितमॉडल: gemini-3.8-flash-medium · प्रयास: medium · तापमान: नियंत्रित नहीं किया जा सकता · प्रॉम्प्ट: 6ef167bbc303उद्गमखुले प्रश्न (2)
जर्मन मार्गदर्शिका से अनूदितgemini-3.8-flash-low · 2026-10-13 · जर्मन मूल
डायग्नोस्टिक्स वर्गों में UDS-NRC त्रुटियों को संकेतित करने और आगे प्रसारित करने के लिए थ्रेड-सुरक्षित अपवाद के रूप में कार्य करता है।
वर्ग ara::diag::DiagUdsNrcException AUTOSAR Adaptive Platform के डायग्नोस्टिक्स वर्गों द्वारा UDS-NRC त्रुटियों को संकेतित करने के लिए एक मानकीकृत अपवाद के रूप में कार्य करता है (AUTOSAR_AP_SWS_Diagnostics §8.12.4 “Class: DiagUdsNrcException”)। एक संबंधित त्रुटि स्थिति होने पर, इसे ara::core::ErrorCode के साथ इंस्टैंसिएट किया जाता है, थ्रो किया जाता है और त्रुटि हैंडलिंग के लिए कॉलिंग एप्लिकेशन द्वारा पकड़ा जाता है। एक आवश्यक सीमा शर्त के रूप में, [SWS_DM_00528] के अनुसार इसका कन्स्ट्रक्टर पूर्ण अपवाद सुरक्षा (noexcept) के साथ-साथ थ्रेड सुरक्षा की गारंटी देता है, जिससे समवर्ती संदर्भों में भी विश्वसनीय ऑब्जेक्ट निर्माण सुनिश्चित होता है।
संदर्भ
वर्ग ara::diag::DiagUdsNrcException AUTOSAR Adaptive Platform में मॉड्यूल diag के डायग्नोस्टिक्स वर्गों के लिए केंद्रीय अपवाद प्रकार का गठन करता है (AUTOSAR_AP_SWS_Diagnostics §8.12.4 “Class: DiagUdsNrcException”)। विनिर्देश [SWS_DM_00527] के अनुसार, यह एक मानकीकृत C++ अपवाद इंटरफ़ेस को परिभाषित करता है, जो सीधे आधार अपवाद वर्ग ara::core::Exception से इनहेरिट करता है। इसका प्राथमिक उत्तरदायित्व डायग्नोस्टिक्स संदर्भ से त्रुटि स्थितियों, विशेष रूप से UDS प्रोटोकॉल के नकारात्मक प्रतिक्रिया कोड (Negative Response Codes, NRC) को प्रोग्रामिंग इंटरफ़ेस के माध्यम से टाइप किए गए अपवादों के रूप में परिवहन करना है। यह वर्ग ara::core::ErrorCode के साथ निकटता से इंटरैक्ट करता है, जो ठोस त्रुटि कोड को समाहित करता है, साथ ही उन कॉलिंग एप्लिकेशन परतों के साथ भी जो डायग्नोस्टिक्स अनुरोध करती हैं और संभावित त्रुटियों को पकड़ती हैं ([SWS_DM_00528])। हेडर ara/diag/diag_uds_nrc_error_domain.h में घोषणा के माध्यम से, यह अपवाद सीधे संबंधित UDS-NRC त्रुटि डोमेन से जुड़ा होता है ([SWS_DM_00528])।
ara::diag::DiagUdsNrcException के एक इंस्टैंस का जीवनचक्र किसी डायग्नोस्टिक्स वर्ग या आंतरिक त्रुटि प्रबंधन रूटीन द्वारा इसके स्पष्ट इंस्टैंसिएशन के साथ शुरू होता है। [SWS_DM_00528] के अनुसार, वर्ग में एक कन्स्ट्रक्टर explicit DiagUdsNrcException(ara::core::ErrorCode err) noexcept; होता है, जो अंतर्निहित त्रुटि कोड को पैरामीटर err के रूप में स्वीकार करता है। यह कन्स्ट्रक्टर स्पष्ट रूप से अपवाद-सुरक्षित (exception safe) और गैर-थ्रोइंग (noexcept) के रूप में परिभाषित है ([SWS_DM_00528]), जिससे यह गारंटी मिलती है कि त्रुटि पथ में ऑब्जेक्ट निर्माण के समय कोई द्वितीयक अपवाद उत्पन्न नहीं हो सकता है। इसके अतिरिक्त, [SWS_DM_00528] के अनुसार निर्माण को थ्रेड-सुरक्षित (thread-safe) के रूप में वर्गीकृत किया गया है। निर्माण के बाद, अपवाद इंस्टैंस को आमतौर पर C++ रनटाइम सिस्टम के माध्यम से मूल्य द्वारा (by value) थ्रो किया जाता है। स्टैक अनवाइंडिंग के दौरान ऑब्जेक्ट का स्वामित्व रनटाइम परिवेश के पास रहता है, जब तक कि अपवाद एक संबंधित catch ब्लॉक में बाउंड और मूल्यांकित नहीं हो जाता। अपवाद हैंडलिंग ब्लॉक से बाहर निकलने पर, नियमित विनाश द्वारा ऑब्जेक्ट का जीवनचक्र समाप्त हो जाता है।
उपयोग पथ
विशिष्ट उपयोग पथ में UDS-NRC त्रुटि की पहचान, अपवाद का निर्माण और एप्लिकेशन द्वारा इसका बाद में मूल्यांकन शामिल है:
एक एप्लिकेशन घटक किसी ara::diag वर्ग के डायग्नोस्टिक्स फ़ंक्शन या सर्विस इंटरफ़ेस को कॉल करता है।
डायग्नोस्टिक्स वर्ग प्रसंस्करण के दौरान निर्धारित करता है कि अनुरोध को सफलतापूर्वक पूरा नहीं किया जा सकता है और एक UDS-NRC मौजूद है, जिसके बाद वह एक संगत ara::core::ErrorCode उत्पन्न करता है।
इस त्रुटि कोड को पास करते हुए, अपवाद ara::diag::DiagUdsNrcException को इसके कन्स्ट्रक्टर के माध्यम से इंस्टैंसिएट किया जाता है ([SWS_DM_00528])।
कॉलिंग एप्लिकेशन अपवाद को या तो सटीक प्रकार ara::diag::DiagUdsNrcException ([SWS_DM_00527]) के रूप में या आधार वर्ग ara::core::Exception के माध्यम से पॉलीमॉर्फिक रूप से पकड़ता है और त्रुटि जानकारी तक पहुँचता है।
चूंकि ara::diag::DiagUdsNrcException स्वयं त्रुटि संकेतन का एक माध्यम है, त्रुटि परिदृश्य मुख्य रूप से अपवाद निर्माण के दौरान मजबूती और समवर्तीता से संबंधित होते हैं:
मजबूत ऑब्जेक्ट निर्माण:noexcept और exception safe ([SWS_DM_00528]) के रूप में विनिर्देश के कारण, यह बात पूरी तरह से खारिज हो जाती है कि निर्माण के दौरान कोई द्वितीयक अपवाद थ्रो किया जाएगा। यह महत्वपूर्ण त्रुटि हैंडलिंग पथों में std::terminate जैसे घातक रनटाइम रुकावटों को रोकता है।
त्रुटि कोड की वैधता: इंस्टैंसिएशन के लिए एक पूर्व शर्त के रूप में एक मान्य ara::core::ErrorCode उपलब्ध होना चाहिए ([SWS_DM_00528])। यह आमतौर पर ara/diag/diag_uds_nrc_error_domain.h द्वारा परिभाषित त्रुटि डोमेन से आता है।
समानांतर डायग्नोस्टिक्स प्रसंस्करण: चूंकि कन्स्ट्रक्टर को thread-safe के रूप में निर्दिष्ट किया गया है ([SWS_DM_00528]), एकाधिक थ्रेड्स अपवाद ऑब्जेक्ट के इनिशियलाइज़ेशन में रेस कंडीशन उत्पन्न किए बिना समवर्ती रूप से डायग्नोस्टिक्स अपवाद उत्पन्न कर सकते हैं।
यह मार्गदर्शिका AUTOSAR विनिर्देश R25-11 के आधार पर एक AI प्रणाली द्वारा तैयार की गई थी।
UML क्लास आरेख
Hohle Dreieckspfeile = Vererbung (zeigt zur Basisklasse); Klicken öffnet die jeweilige Klassenseite.
gemini-3.8-flash-low· 2026-10-13 · जर्मन मूल