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

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


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

एक्सेप्शन C++ स्टैंडर्ड में <exception> क्लास के रूप में परिभाषित हैं जिनका उपयोग हम अपने प्रोग्राम में कर सकते हैं। पैरेंट-चाइल्ड क्लास पदानुक्रम की व्यवस्था नीचे दिखाई गई है:

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

C++ में सामान्य एक्सेप्शन क्लासेस हैं:

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

कीवर्ड:

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

Try/Catch ब्लॉक:

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

उदाहरण कोड

#include <iostream> using namespace std; class Sample1 {    public:    Sample1()    {       cout << "Construct an Object of sample1" << endl;    }    ~Sample1()    {       cout << "Destruct an Object of sample1" << endl;    } }; class Sample2 {    public:    Sample2()    {       int i=7;       cout << "Construct an Object of sample2" << endl;       throw i;    }    ~Sample2()    {       cout << "Destruct an Object of sample2" << endl;    } }; int main() {    try {       Sample1 s1;       Sample2 s2;    } catch(int i) {       cout << "Caught " << i << endl;    } }

आउटपुट

Construct an Object of sample1 Construct an Object of sample2 Destruct an Object of sample1 Caught 7

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

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

उदाहरण कोड

#include <iostream> #include <exception> using namespace std; struct DivideByZero : public exception {    const char * what () const throw () {       return "My Exception";    } }; int main() {    try {       throw DivideByZero();    } catch(DivideByZero& e) {       cout << "Exception caught" << endl;       cout << e.what() << endl;    } catch(exception& e) {    } }

आउटपुट

Exception caught My Exception what() = एक्सेप्शन क्लास द्वारा प्रदान की गई एक पब्लिक मेथड और इसे सभी चाइल्ड एक्सेप्शन क्लास द्वारा ओवरराइड किया गया है। यह एक्सेप्शन का कारण लौटाता है।
  1. C++ में एक्सेप्शन कैसे काम करते हैं C++ में एक्सेप्शन कैसे काम करते हैं

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

  1. - C# में एक्सेप्शन हैंडलिंग के सर्वोत्तम अभ्यास

    प्रभावी एक्सेप्शन हैंडलिंग मजबूत, रखरखाव योग्य और डीबग करने योग्य एप्लिकेशन के लिए महत्वपूर्ण है। यहां C# में सर्वोत्तम अभ्यास दिए गए हैं। 1. लॉगिंग फ्रेमवर्क का उपयोग करें // Serilog, NLog, log4net, Microsoft.Extensions.Logging private readonly ILogger _logger; try { // जोखिम भरा ऑपरेशन } cat

  1. - पायथन में एक्सेप्शन हैंडलिंग क्या है?

    एरर वह है जो कंपाइल टाइम पर प्रोग्राम में गलत हो जाता है जैसे सिंटैक्टिकल एरर। उदाहरण के लिए: abe = 5 आउटपुट: SyntaxError: cant assign to literal यहां तक कि यदि कोई स्टेटमेंट या एक्सप्रेशन सिंटैक्टिकली सही है, तो यह एक्जीक्यूट करने का प्रयास करने पर एरर का कारण बन सकता है। एक्जीक्यूशन के दौरान पता च