2011-05-16 19 views
6

यह एक चुनिंदा चीज है और शायद यह सिर्फ मेरी ओसीडी फ्लेयरिंग है, लेकिन मैं सोच रहा था कि मानक अपवाद वर्ग पदानुक्रम क्यों स्थापित है।मानक अपवाद पदानुक्रम की संरचना के कारण

exception 
    bad_alloc 
    bad_cast 
    bad_typeid 
    bad_exception 
    ios_base::failure 
    runtime_error 
    subclasses... 
    logic_error 
    subclasses... 

क्या सभी bad_ * अपवाद सिर्फ lang_support_error जैसे कुछ सबक्लास नहीं हो सकते? और ios_base :: विफलता पूरी तरह से जगह से बाहर लगता है।

क्या कुछ ऐतिहासिक या तकनीकी कारण इस तरह खत्म हो गए हैं?

+3

बस दिखाने के लिए कितना मुश्किल (और अनिवार्य रूप से व्यर्थ) यह अपवाद पदानुक्रम डिजाइन करने के लिए है :-) चला जाता है –

उत्तर

3

अगर मैं सही ढंग से याद, तर्क था:

  • logic_error एक assert के बराबर होगा, लेकिन
  • runtime_error कम कठोर व्यवहार के साथ अन्य सभी का आधार होगा

हालांकि, जैसा कि आपने देखा है, यह मानक पुस्तकालय में भी काफी नहीं है।

मुझे लगता है कि मुख्य मुद्दा विषयपरकता है: std::out_of_rangelogic_error या runtime_error है?

यह व्यक्तिपरक है ...

संबंधित मुद्दे