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

C++ में एक्सेप्शन कैसे काम करते हैं

परिचय

C++ में एक्सेप्शन हैंडलिंग रनटाइम त्रुटियों को संभालने की एक प्रक्रिया है। एक्सेप्शन एक घटना है जो C++ में रनटाइम पर फेंकी जाती है। सभी एक्सेप्शन std::exception क्लास से प्राप्त होते हैं। यह एक रनटाइम त्रुटि है जिसे संभाला जा सकता है। यदि हम एक्सेप्शन को नहीं संभालते हैं तो यह एक्सेप्शन संदेश प्रिंट करता है और प्रोग्राम समाप्त कर देता है।

सामान्य एक्सेप्शन क्लासेस

क्र.सं.एक्सेप्शन और विवरण
1std::exception
यह एक एक्सेप्शन है और सभी मानक C++ एक्सेप्शन की पैरेंट क्लास है।
2std::bad_cast
यह dynamic_cast द्वारा फेंका गया एक्सेप्शन है।
3std::bad_exception
यह एक्सेप्शन C++ प्रोग्राम में अप्रत्याशित एक्सेप्शन को संभालने के लिए उपयोग किया जाता है।
4std::bad_alloc
यह आमतौर पर new द्वारा फेंका जाता है।
5std::logic_error
यह एक्सेप्शन कोड पढ़कर पता लगाया जा सकता है।
6std::runtime_error
यह एक्सेप्शन कोड पढ़कर पता नहीं लगाया जा सकता।
7std::bad_typeid
यह typeid द्वारा फेंका गया एक्सेप्शन है।

कीवर्ड

एक्सेप्शन हैंडलिंग में 3 कीवर्ड हैं: try, catch और throw।

Try/Catch ब्लॉक

C++ में, एक्सेप्शन हैंडलिंग try/catch स्टेटमेंट का उपयोग करके की जाती है। वह कोड जिससे एक्सेप्शन हो सकता है, try ब्लॉक में रखा जाता है। Catch ब्लॉक एक्सेप्शन को संभालने के लिए उपयोग किया जाता है।

उदाहरण कोड

#include <iostream>
using namespace std;

class Sample1 {
public:
    Sample1() {
        cout << "sample1 का ऑब्जेक्ट बनाया गया" << endl;
    }
    ~Sample1() {
        cout << "sample1 का ऑब्जेक्ट नष्ट किया गया" << endl;
    }
};

class Sample2 {
public:
    Sample2() {
        int i = 7;
        cout << "sample2 का ऑब्जेक्ट बनाया गया" << endl;
        throw i;
    }
    ~Sample2() {
        cout << "sample2 का ऑब्जेक्ट नष्ट किया गया" << endl;
    }
};

int main() {
    try {
        Sample1 s1;
        Sample2 s2;
    } catch (int i) {
        cout << "पकड़ा गया " << i << endl;
    }
}

आउटपुट

sample1 का ऑब्जेक्ट बनाया गया
sample2 का ऑब्जेक्ट बनाया गया
sample1 का ऑब्जेक्ट नष्ट किया गया
पकड़ा गया 7

यूजर डिफाइंड एक्सेप्शन

हम exception क्लास को इनहेरिट करके और उसकी कार्यक्षमता को ओवरराइड करके अपने खुद के एक्सेप्शन परिभाषित कर सकते हैं।

उदाहरण कोड

#include <iostream>
#include <exception>
using namespace std;

struct DivideByZero : public exception {
    const char * what () const throw () {
        return "मेरा एक्सेप्शन";
    }
};

int main() {
    try {
        throw DivideByZero();
    } catch (DivideByZero& e) {
        cout << "एक्सेप्शन पकड़ा गया" << endl;
        cout << e.what() << endl;
    } catch (exception& e) {
    }
}

आउटपुट

एक्सेप्शन पकड़ा गया
मेरा एक्सेप्शन

what() = exception क्लास द्वारा प्रदान की गई एक पब्लिक विधि है जिसे सभी चाइल्ड एक्सेप्शन क्लासेस द्वारा ओवरराइड किया गया है। यह एक्सेप्शन का कारण लौटाता है।

  1. - C++ में OpenCV का उपयोग करके माउस इवेंट के साथ कैसे काम करें

    माउस इवेंट OpenCV की सबसे उपयोगी विशेषताओं में से एक है। OpenCV में, हम माउस पॉइंटर की स्थिति को ट्रैक कर सकते हैं और क्लिक (दायां, बायां और मध्य-क्लिक) को ट्रैक कर सकते हैं। OpenCV का रोबोटिक्स और कंप्यूटर विजन में व्यापक अनुप्रयोग है। रोबोटिक्स और कंप्यूटर विजन में माउस पॉइंटर और क्लिक को ट्रैक कर

  1. - C++/C++17 में इंलाइन वेरिएबल्स कैसे काम करते हैं?

    C++ में, हम फ़ंक्शन्स के लिए inline कीवर्ड का उपयोग कर सकते हैं। C++17 संस्करण में, inline variable की अवधारणा आई है। इंलाइन वेरिएबल को कई ट्रांसलेशन यूनिट्स (translation units) में परिभाषित करने की अनुमति है। यह वन डेफिनिशन रूल (One Definition Rule) का भी पालन करता है। यदि इसे एक से अधिक बार परिभ

  1. C++ में एक्सेप्शन हैंडलिंग की मूल बातें C++ में एक्सेप्शन हैंडलिंग की मूल बातें

    C++ में, एक्सेप्शन हैंडलिंग रनटाइम त्रुटियों को संभालने की एक प्रक्रिया है। एक्सेप्शन C++ में रनटाइम पर फेंका गया एक इवेंट है। सभी एक्सेप्शन std::exception क्लास से प्राप्त होते हैं। यह एक रनटाइम त्रुटि है जिसे संभाला जा सकता है। यदि हम एक्सेप्शन को नहीं संभालते हैं, तो यह एक्सेप्शन संदेश प्रिंट कर