वे प्रोग्रामर जो अपवाद समारोह से फेंक दिया जाएगा करने के लिए संकेत मिलता है। उनके पास यह लाभ है कि आपके पास गारंटी है कि उस समारोह से कोई अन्य अपवाद नहीं फेंक दिया जा सकता है। हालांकि, फेंक विनिर्देशक में बताए गए कार्यों के अलावा वास्तव में कोई भी अपवाद फेंकने की कोई संकलन-समय जांच नहीं है। इसके बजाए, यह रनटाइम पर चेक किया गया है। और यदि यह विफल रहता है, तो unexpected()
कहा जाता है, जो डिफ़ॉल्ट रूप से abort()
पर कॉल करता है जो बदले में आपके प्रोग्राम को समाप्त कर देता है। इसलिए, जब तक कि आप वास्तव में अपने प्रोग्राम को मरना नहीं चाहते हैं, यदि आप खराब हो जाते हैं और एक अप्रत्याशित अपवाद फेंक दिया जाता है, तो शायद उनका उपयोग करना एक बुरा विचार है।
एक जगह जहां मैं वास्तव में उनका उपयोग करने की सिफारिश करता हूं वह विनाशकों पर है। यह वास्तव में खराब है यदि कोई विनाशक फेंकता है। उन्हें कभी फेंकना चाहिए।इसलिए, यदि आप एक विनाशक पर throw()
का उपयोग करते हैं, यह इंगित करने के लिए कि यह अपवाद नहीं फेंक सकता है, तो आप जानते हैं कि खराब प्रोग्राम में जारी रखने के बजाए आपका प्रोग्राम मर जाएगा, यह एक विनाशक से अपवाद के बाद होगा।
भले ही, यदि आप किसी भी तरह के फेंक विनिर्देशक का उपयोग करते हैं, तो आपको यह सुनिश्चित करना होगा कि यदि आप उल्लंघन करते हैं तो आप वास्तव में अपने प्रोग्राम को मरना चाहते हैं। इसलिए, आम तौर पर बोलते हुए, उनका उपयोग करना सबसे अच्छा नहीं है।
स्रोत
2010-05-03 23:10:59
अपवाद विनिर्देशों पर निश्चित लेख: http://www.gotw.ca/publications/mill22.htm "नैतिक # 1: अपवाद विनिर्देश कभी नहीं लिखें। नैतिक # 2: संभवतः एक खाली एक को छोड़कर, लेकिन अगर मैं आप भी इससे बचेंगे। " –
http://www.gotw.ca/publications/mill22.htm –
भविष्य से संदेश: यदि कोई आज इसे पढ़ रहा है, तो उसे पता होना चाहिए कि 'अस्वीकरण' प्रोग्राम प्रदर्शन में सुधार कर सकता है (सी ++ 11 में) –