Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> सी प्रोग्रामिंग

C में ट्राई-कैच त्रुटि प्रबंधन में महारत हासिल करें: एक व्यावहारिक मार्गदर्शिका

परिचय

C में ट्राई-कैच त्रुटि प्रबंधन में महारत हासिल करें: एक व्यावहारिक मार्गदर्शिका

"ट्राई" और "कैच" शब्द वर्णन करते हैं कि जब कोई प्रोग्राम कोड या डेटा समस्या के कारण अपवाद का सामना करता है तो क्या करना चाहिए। अपवादों को कोड के ट्राई ब्लॉक में संभाला जाता है। कैच ब्लॉक का उपयोग ट्राई ब्लॉक से अपवादों को खोजने और संभालने के लिए किया जाता है। पायथन, C++, और जावास्क्रिप्ट सहित कई प्रोग्रामिंग भाषाओं में ट्राई-कैच स्टेटमेंट शामिल हैं।

यह लेख दर्शाता है कि ट्राई-कैच स्टेटमेंट क्या है और C प्रोग्रामिंग में उदाहरण का उपयोग करके इसे कैसे लागू किया जाता है।

ट्राई-कैच स्टेटमेंट क्या है?

ट्राई स्टेटमेंट उन स्टेटमेंट का संग्रह परिभाषित करता है जो अपवाद उत्पन्न कर सकते हैं। जब एक विशिष्ट प्रकार का अपवाद होता है, तो कैच ब्लॉक वह जगह है जहां अपवाद भेजा जाता है। यदि ट्राई/कैच ब्लॉक इसे संभालने में विफल रहता है तो कंपाइलर या तो एक त्रुटि नोटिस देगा या अपवाद कॉल स्टैक में ऊपर की ओर तब तक यात्रा करता रहेगा जब तक कि इसे संबोधित नहीं किया जाता।

ट्राई-कैच स्टेटमेंट का सामान्य सिंटैक्स इस प्रकार दिया गया है:

try {
    /*
    कुछ कोड डालें जो शायद त्रुटियां उत्पन्न करेगा
    */
}
catch {
    /*
    उत्पन्न त्रुटियों को संभालने के लिए कोड लिखें।
    */
}

C में ट्राई-कैच स्टेटमेंट क्या है?

C अपवाद प्रबंधन का समर्थन नहीं करता और ऐसा करने के लिए कोई अंतर्निहित तंत्र नहीं है। हालांकि, आप setjmp और longjmp कॉल का उपयोग करके कुछ हद तक इसका अनुकरण कर सकते हैं। एक बार स्टैक विज़िट हो जाने के बाद मेमोरी को मुक्त करने का कोई तरीका नहीं होने के कारण, अपवाद-प्रबंधन तंत्र अक्षम और असुरक्षित हैं, और C में गार्बेज कलेक्टर नहीं है। RAM को मुक्त करने के लिए, हमें संभवतः संदर्भ प्रबंधकों को भी एकीकृत करने की आवश्यकता होगी।

अब, जैसे-जैसे हम कोड में सुधार करते हैं, हम धीरे-धीरे एक समाधान का निर्माण करेंगे। setjmp.h हेडर फ़ाइल द्वारा प्रदान किए जाने वाले longjmp और setjmp, दो C फ़ंक्शन का उपयोग हमारे द्वारा किया जाएगा। setjmp फ़ंक्शन jmp_buf प्रकार के वेरिएबल को स्वीकार करता है और जब इसे सीधे कॉल किया जाता है तो 0 लौटाता है। जब उसी jmp_buf वेरिएबल का उपयोग दो वेरिएबल के साथ longjmp को आमंत्रित करने के लिए किया जाता है, तो setjmp फ़ंक्शन एक मान लौटाता है जो longjmp के दूसरे आर्गुमेंट के मान से मेल खाता है।

उपरोक्त कार्यान्वयन का एक उदाहरण इस प्रकार दिया गया है:

#include <stdio.h>
#include <setjmp.h>
#define TRY do { jmp_buf buf_state; if (!setjmp(buf_state)) {
#define CATCH } else {
#define ENDTRY }} while(0)
#define THROW longjmp(buf_state, 1)

int main() {
    TRY {
        printf("ट्राई स्टेटमेंट परीक्षण\n");
        THROW;
        printf("स्टेटमेंट प्रकट नहीं होना चाहिए, क्योंकि THROW ब्लॉक पहले ही अपवाद फेंक चुका है \n");
    }
    CATCH {
        printf("अपवाद मिला \n");
    }
    ENDTRY;
    return 0;
}

उपरोक्त C प्रोग्राम में, ENDTRY फ़ंक्शन do-while ब्लॉक के समापन भाग को प्रदान करने के लिए उपयोग किया जाता है।

C में ट्राई-कैच त्रुटि प्रबंधन में महारत हासिल करें: एक व्यावहारिक मार्गदर्शिका

निष्कर्ष

यदि कोई प्रोग्राम चलते समय डेटा या कोडिंग त्रुटि के कारण अपवाद का सामना करता है, तो "ट्राई" और "कैच" वर्णन करते हैं कि इसे कैसे प्रबंधित किया जाए। कोड के ट्राई ब्लॉक में अपवाद होते हैं जबकि कैच ब्लॉक वह जगह है जहां ट्राई ब्लॉक से त्रुटियों को खोजा और संभाला जाता है। कई प्रोग्रामिंग भाषाएं ट्राई-कैच ब्लॉक का समर्थन करती हैं लेकिन C नहीं करता। इस मार्गदर्शिका ने C प्रोग्रामिंग में ट्राई-कैच स्टेटमेंट का उपयोग करने की एक विधि का वर्णन किया।

लेखक के बारे में

C में ट्राई-कैच त्रुटि प्रबंधन में महारत हासिल करें: एक व्यावहारिक मार्गदर्शिका

कोमल बाटूल बाटूल

मैं प्रौद्योगिकियों और नए विचारों पर शोध करने के लिए भावुक हूँ और इसने मुझे LinuxHint के लिए लिखने के लिए यहां लाया है। मेरा मुख्य ध्यान प्रोग्रामिंग भाषाओं और कंप्यूटर विज्ञान से संबंधित विषयों पर लिखना है।

  1. पायथन ऑब्जेक्ट तुलना:  is  बनाम  == पायथन ऑब्जेक्ट तुलना: "is" बनाम "=="

    इस लेख में हम ऑब्जेक्ट तुलना यानी is ऑपरेटर और समानता ऑपरेटर == के बीच अंतर के बारे में जानेंगे। समानता ऑपरेटर पास किए गए आर्गुमेंट के मान पर काम करता है जबकि is ऑपरेटर पास किए गए दो ऑब्जेक्ट्स के रेफरेंस की तुलना करता है। समानता ऑपरेटर के मामले में आर्गुमेंट की सामग्री की तुलना की जाती है, उनके रेफ

  1. एंड्रॉइड लोडर का उपयोग कैसे करें? एंड्रॉइड लोडर का उपयोग कैसे करें?

    एंड्रॉइड में लोडर (लीगेसी) बनाम आधुनिक विकल्प लोडर (android.app.LoaderManager, CursorLoader) API 28 में डिप्रिकेट हो गए हैं। नए कोड के लिए, ViewModel + LiveData/Flow + Room/Paging 3 या Coroutines + Flow का उपयोग करें। यह लेख लीगेसी लोडर API को संदर्भ के लिए दस्तावेज करता है और आधुनिक प्रतिस्थापन दिख

  1. एंड्रॉइड में ईमेल एड्रेस कैसे वैलिडेट करें एंड्रॉइड में ईमेल एड्रेस कैसे वैलिडेट करें

    रैगुलर एक्सप्रेशन (Regex) और Patterns API का उपयोग करके ईमेल वैलिडेशन एंड्रॉइड में ईमेल एड्रेस वैलिडेट करने के लिए java.util.regex.Pattern और Matcher क्लासेज या android.util.Patterns हेल्पर क्लास का उपयोग किया जा सकता है। यह उदाहरण दोनों दृष्टिकोण दिखाता है। चरण 1: नया प्रोजेक्ट बनाएं Android Studi