शीर्षलेख <stdexcept>
कुछ मानक अपवादों को परिभाषित करता है। हालांकि, मुझे यह चुनने में परेशानी है कि कौन सा अपवाद उपयोग करना है। क्या ऑनलाइन पाए जाने के लिए अच्छे दिशानिर्देश हैं? मैं अपनी समस्या को उदाहरण के साथ चित्रित करने का प्रयास करता हूं:सी ++ किस (मानक) अपवाद का उपयोग कब करें?
एक समारोह में एक नया वेक्टर लौटने के लिए एक (भौतिक) वेक्टर और कोण (0 और पीआई के बीच) की लंबाई लगती है। यदि कोण नकारात्मक है तो
std::invalid_argument
, नकारात्मक कोण अवैध हैं?- ए
std::logic_error
, क्योंकि नकारात्मक कोण इस मामले में समझ में नहीं आता है? - ए
std::out_of_range
, क्योंकि नकारात्मक कोण कोण के लिए अनुमत सीमा के बाहर हैं? - ए
std::domain_error
, क्योंकि गणितीय फ़ंक्शन को नकारात्मक कोणों पर परिभाषित नहीं किया गया है। - या मुझे एक कस्टम अपवाद परिभाषित करना चाहिए?
: - ये अपवाद
यह पूरी तरह से आपके ऊपर है। इससे कोई फर्क नहीं पड़ता कि अपवादों को फेंक दिया जाता है, जब तक वे पकड़े नहीं जाते हैं, वे समस्या को रोक देंगे। तो, जो भी अपवाद आप तय करते हैं कि आप फेंकने जा रहे हैं, आप कहीं पकड़ने जा रहे हैं। तो, यह पूरी तरह से आप पर निर्भर है। –
आप अपनी त्रुटियों को मानक मानकों से अलग करने के लिए अपने अपवाद प्रकारों को पेश करना चाहेंगे। – Jarod42
ठीक है, मुझे अपने दिशानिर्देशों को समझना है। क्या अधिक विस्तृत विवरण हैं जिनके लिए मानक अपवादों का इरादा शुरू किया गया था। दोनों [cppreference.com] पर विवरण (http://en.cppreference.com/w/cpp/header/stdexcept) और [cplusplus.com] (http://www.cplusplus.com/reference/stdexcept/) बहुत संक्षिप्त हैं। –