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

सी में ट्राई-कैच एरर हैंडलिंग में महारत हासिल करना:एक प्रैक्टिकल गाइड

<पी> सी में ट्राई-कैच एरर हैंडलिंग में महारत हासिल करना:एक प्रैक्टिकल गाइड

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

<पी> यह आलेख दर्शाता है कि ट्राई-कैच स्टेटमेंट क्या है और इसे C प्रोग्रामिंग में एक उदाहरण का उपयोग करके कैसे कार्यान्वित किया जाता है।

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

<पी> दकोशिश स्टेटमेंट कथनों के एक संग्रह को परिभाषित करता है जो अपवाद पैदा कर सकता है। जब एक विशिष्ट प्रकार का अपवाद होता है, तो कैच ब्लॉक वह जगह है जहां अपवाद भेजा जाता है। कंपाइलर या तो एक त्रुटि नोटिस आउटपुट करेगा या अपवाद तब तक कॉल स्टैक तक यात्रा करना जारी रखेगा जब तक कि इसे संबोधित नहीं किया जाता है यदि प्रयास/पकड़ ब्लॉक इसे संभालने में विफल रहता है।

<पी> ट्राई-कैच का सामान्य वाक्यविन्यास कथन इस प्रकार दिया गया है:

<पी> प्रयास करें {
    /*
    कुछ कोड डालें जो संभवतः त्रुटियाँ उत्पन्न करेगा
    */
}
पकड़ो {
    /*
    उत्पन्न त्रुटियों से निपटने के लिए एक कोड लिखें।
    */
}

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

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

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

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

<पी> #शामिल
#शामिल करें
#परिभाषित करें प्रयास करें { jmp_buf buf_state; यदि ( !setjmp(buf_state)) {
#कैच को परिभाषित करें } अन्यथा {
#अंत को परिभाषित करें }} जबकि(0)
#थ्रो लॉन्गजम्प को परिभाषित करें(buf_state, 1)
पूर्णांक मुख्य()
{
    प्रयास करें {
        प्रिंटफ ("कथन परीक्षण का प्रयास करें\n");
        फेंको;
        प्रिंटफ ("विवरण प्रकट नहीं होना चाहिए, क्योंकि थ्रो ब्लॉक ने पहले ही अपवाद फेंक दिया है \n");
    }
    पकड़ो {
        प्रिंटफ ("अपवाद मिला \n");
    }
    अंत;
    वापसी 0;
}

<पी> उपरोक्त C प्रोग्राम में, ENDTRY फ़ंक्शन का उपयोग डू-व्हाइल ब्लॉक का समापन भाग प्रदान करने के लिए किया जाता है।

<पी> सी में ट्राई-कैच एरर हैंडलिंग में महारत हासिल करना:एक प्रैक्टिकल गाइड

निष्कर्ष

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

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

<पी> सी में ट्राई-कैच एरर हैंडलिंग में महारत हासिल करना:एक प्रैक्टिकल गाइड

कोमल बतूल बतूल

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


  1. एक वर्ग में खुदे हुए वृत्त के क्षेत्रफल की गणना करने का कार्यक्रम एक वर्ग में खुदे हुए वृत्त के क्षेत्रफल की गणना करने का कार्यक्रम

    एक वर्ग में अंकित एक वृत्त एक वृत्त है जो वृत्त की भुजाओं को उसके सिरों पर स्पर्श करता है। अर्थात। खुदा हुआ वृत्त का व्यास वर्ग की भुजा के बराबर है। क्षेत्रफल की गणना सूत्र “((丌/4)*a*a)” . का उपयोग करके की जा सकती है जहाँ a वर्ग की भुजा की लंबाई है। संहिता का तर्क - वृत्त के अंदर अंकित वृत्त के क

  1. पायथन में किसी लेबल से टेक्स्ट कैसे निकालें? पायथन में किसी लेबल से टेक्स्ट कैसे निकालें?

    Tkinter एक पायथन लाइब्रेरी है जिसका उपयोग GUI- आधारित एप्लिकेशन बनाने और विकसित करने के लिए किया जाता है। इस लेख में, हम देखेंगे कि किसी लेबल से टेक्स्ट को कैसे हटाया जाए, जिसमें कुछ टेक्स्ट होगा। किसी लेबल से टेक्स्ट हटाने के लिए, हम एक संबद्ध बटन बनाएंगे जो लेबल के लिए ट्रिगर के रूप में कार्य करे

  1. CSS ट्रांसफ़ॉर्म और स्केल लागू करते समय छवि गुणवत्ता बनाए रखें CSS ट्रांसफ़ॉर्म और स्केल लागू करते समय छवि गुणवत्ता बनाए रखें

    CSS इमेज-रेंडरिंग प्रॉपर्टी हमारी इमेज को स्केल करने के लिए एल्गोरिथम सेट करने में हमारी मदद करती है। सिंटैक्स CSS इमेज-रेंडरिंग प्रॉपर्टी का सिंटैक्स इस प्रकार है - चयनकर्ता { इमेज-रेंडरिंग:/*value*/} उदाहरण निम्नलिखित उदाहरण CSS इमेज-रेंडरिंग प्रॉपर्टी को दर्शाते हैं। img {ऊंचाई:200px; चौड़ाई