मैं एक बहुत ही सरल प्रश्न से जूझ रहा हूँ:
अब मैं एक सर्वर अनुप्रयोग पर काम कर रहा हूं, और मुझे अपवादों के लिए एक पदानुक्रम का आविष्कार करने की आवश्यकता है (कुछ अपवाद पहले से मौजूद हैं, लेकिन एक सामान्य रूपरेखा की आवश्यकता है)। मैं भी यह कैसे करना शुरू करूँ?
मैं इस रणनीति का पालन करने की सोच रहा हूं:
1) क्या गलत हो रहा है?
- कुछ पूछा जाता है, जिसकी अनुमति नहीं है।
- कुछ पूछा जाता है, इसकी अनुमति है, लेकिन गलत मापदंडों के कारण यह काम नहीं करता है।
- कुछ पूछा जाता है, इसकी अनुमति है, लेकिन आंतरिक त्रुटियों के कारण यह काम नहीं करता है।
2) अनुरोध कौन शुरू कर रहा है?
- ग्राहक आवेदन
- एक अन्य सर्वर अनुप्रयोग
3) संदेश सौंपना: जैसा कि हम एक सर्वर अनुप्रयोग के साथ काम कर रहे हैं, यह संदेश प्राप्त करने और भेजने के बारे में है। तो क्या हुआ अगर संदेश भेजना गलत है?
जैसे, हमें निम्नलिखित अपवाद प्रकार मिल सकते हैं:
- ServerNotAllowedException
- ClientNotAllowedException
- ServerParameterException
- ClientParameterException
- आंतरिक अपवाद (यदि सर्वर को पता नहीं है कि अनुरोध कहां से आ रहा है)
- ServerInternalException
- ClientInternalException
- MessageHandlingException
यह अपवाद पदानुक्रम को परिभाषित करने के लिए एक बहुत ही सामान्य दृष्टिकोण है, लेकिन मुझे डर है कि मुझे कुछ स्पष्ट मामलों की कमी हो सकती है। क्या आपके पास विचार हैं कि मैं किन क्षेत्रों को कवर नहीं कर रहा हूं, क्या आप इस पद्धति के किसी भी कमियों से अवगत हैं या इस तरह के प्रश्न के लिए एक अधिक सामान्य दृष्टिकोण है (बाद वाले मामले में, मुझे यह कहां मिल सकता है)?
अग्रिम में धन्यवाद
catchमेरे द्वारा उपयोग किए जाने वाले अधिकांश ब्लॉकों के लिए, मेरे पास अपवाद के लिए बहुत अधिक उपयोग नहीं है, जिसमें त्रुटि संदेश शामिल है। मेरे पास वास्तव में कुछ भी अलग नहीं है मैं एक अपवाद को एक फ़ाइल को पढ़ने में विफल करने के लिए शामिल कर सकता हूं, क्योंकि इसे पढ़ने की प्रक्रिया के दौरान स्मृति को आवंटित करने में विफल रहा है, इसलिए मैं सिर्फ std::exceptionउस त्रुटि संदेश को पकड़ता हूं और उसे रिपोर्ट करता हूं , शायद सजाने के लिए। इसे "Failed to open file: %s", ex.what()प्रिंट करने से पहले स्टैक बफर के साथ ।
catchएक ही पुनर्प्राप्ति साइट में कई अलग-अलग ब्लॉकों का उपयोग करने वाले लोगों के उदाहरण देखे हैं , लेकिन अक्सर यह अपवाद के अंदर संदेश को अनदेखा करने और अधिक स्थानीयकृत संदेश को प्रिंट करने के लिए होता है ...