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

C++ में बेस और डेराइव्ड क्लास एक्सेप्शन पकड़ना

बेस और डेराइव्ड दोनों क्लास के एक्सेप्शन को पकड़ने के लिए, डेराइव्ड क्लास के कैच ब्लॉक को बेस क्लास से पहले रखना आवश्यक है। अन्यथा, डेराइव्ड क्लास का कैच ब्लॉक कभी नहीं पहुंचेगा।

एल्गोरिदम

शुरुआत
    क्लास B घोषित करें
    क्लास D घोषित करें जो क्लास B को इनहेरिट करती है
    क्लास D का ऑब्जेक्ट घोषित करें
    Try: derived थ्रो करें
    Catch (D derived)
        "डेराइव्ड एक्सेप्शन पकड़ा गया" प्रिंट करें
    Catch (B b)
        "बेस एक्सेप्शन पकड़ा गया" प्रिंट करें
समाप्ति

यहां एक सरल उदाहरण है जहां डेराइव्ड क्लास का कैच ब्लॉक बेस क्लास से पहले रखा गया है, अब आउटपुट देखें:

#include <iostream>
using namespace std;

class B {};
class D: public B {}; // क्लास D, क्लास B को इनहेरिट करती है

int main() {
    D derived;
    try {
        throw derived;
    }
    catch(D derived) {
        cout << "डेराइव्ड एक्सेप्शन पकड़ा गया"; // डेराइव्ड क्लास का कैच ब्लॉक
    }
    catch(B b) {
        cout << "बेस एक्सेप्शन पकड़ा गया"; // बेस क्लास का कैच ब्लॉक
    }
    return 0;
}

आउटपुट

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

यहां एक सरल उदाहरण है जहां बेस क्लास का कैच ब्लॉक डेराइव्ड क्लास से पहले रखा गया है, अब आउटपुट देखें:

#include <iostream>
using namespace std;

class B {};
class D: public B {};

int main() {
    D derived;
    try {
        throw derived;
    }
    catch(B b) {
        cout << "बेस एक्सेप्शन पकड़ा गया"; // बेस क्लास का कैच ब्लॉक
    }
    catch(D derived) {
        cout << "डेराइव्ड एक्सेप्शन पकड़ा गया"; // डेराइव्ड क्लास का कैच ब्लॉक
    }
    return 0;
}

आउटपुट

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

इस प्रकार यह सिद्ध होता है कि हमें डेराइव्ड क्लास के कैच ब्लॉक को बेस क्लास से पहले रखना चाहिए। अन्यथा, डेराइव्ड क्लास का कैच ब्लॉक कभी नहीं पहुंचेगा।

नियम

  • कैच ब्लॉक्स को सबसे विशिष्ट से सबसे सामान्य क्रम में रखें
  • डेराइव्ड क्लास के कैच ब्लॉक पहले, फिर बेस क्लास के
  • बेस क्लास का कैच ब्लॉक डेराइव्ड क्लास ऑब्जेक्ट को भी पकड़ लेगा (पॉलीमॉर्फिज्म के कारण)
  1. - C# में Base और Derived Classes क्या हैं?

    एक Class को एक से अधिक Class या Interface से Derive किया जा सकता है, जिसका अर्थ है कि यह Multiple Base Classes या Interfaces से Data और Functions Inherit कर सकती है।उदाहरण के लिए, Vehicle Base Class निम्न Derived Classes के साथ:Truck Bus MotobikeDerived Class, Base Class के Member Variables और Membe

  1. - C# में कोवेरिएंस और कंट्रावेरिएंस (Covariance and Contravariance)

    C# में कोवेरिएंस और कंट्रावेरिएंस जेनेरिक टाइप पैरामीटर्स के लिए अंतर्निहित (implicit) रूपांतरण सक्षम करते हैं, जिससे टाइप सेफ्टी बनी रहती है। ये एरे, डेलीगेट्स, और जेनेरिक इंटरफेस पर लागू होते हैं। वर्ग पदानुक्रम class One { } class Two : One { } class Three : Two { } कोवेरिएंस (Covariance) - ou

  1. - पायथन एक्सेप्शन बेस क्लासेस

    अन्य हाई-लेवल लैंग्वेजेज की तरह, पायथन में भी एक्सेप्शन्स होते हैं। जब कोई समस्या होती है, तो यह एक एक्सेप्शन उठाता है। ZeroDivisionError, AssertionError आदि जैसे विभिन्न प्रकार के एक्सेप्शन्स होते हैं। सभी एक्सेप्शन क्लासेस BaseException क्लास से डिराइव्ड होती हैं।कोड बिल्ट-इन एक्सेप्शन्स चला सकता