मैं इस सवाल पर सलाह पढ़ रहा हूं कि एक अपवाद को कैसे निपटाया जाना चाहिए, जहां यह संभव हो सके।
सबसे अच्छा अभ्यास पर मेरे दुविधा है कि क्या एक आज़माएं / कैच का उपयोग करना चाहिए / अंत में एक enum वापस जाने के लिए है (या एक पूर्णांक है कि एक मूल्य का प्रतिनिधित्व करता है, त्रुटि के लिए, ठीक है, 2 के लिए आदि चेतावनी, मामले के आधार पर के लिए 0 1) इतना है कि एक उत्तर हमेशा क्रम में होता है, या किसी को अपवाद के माध्यम से जाने देना चाहिए ताकि कॉलिंग हिस्सा इससे निपट सके?
मैं जो इकट्ठा कर सकता हूं, यह मामले के आधार पर भिन्न हो सकता है, इसलिए मूल सलाह अजीब लगती है।
उदाहरण के लिए, एक वेब सेवा पर, आप हमेशा एक स्थिति को वापस करना चाहते हैं, इसलिए किसी भी अपवाद को मौके पर ही निपटा दिया जाना चाहिए, लेकिन किसी फ़ंक्शन के अंदर यह कहने देता है कि http के माध्यम से कुछ डेटा प्राप्त / पोस्ट करता है, आप चाहते हैं अपवाद (उदाहरण के लिए 404 के मामले में) केवल उस व्यक्ति को पास करने के लिए जो इसे निकाल दिया। यदि आप नहीं करते हैं, तो आपको परिणाम की गुणवत्ता (त्रुटि: 404) के कॉलिंग भाग को सूचित करने के लिए कुछ रास्ता बनाना होगा, साथ ही परिणाम भी।
हालाँकि यह संभव है कि डेटा प्राप्त / पोस्ट करने वाले सहायक फ़ंक्शन के अंदर 404 अपवाद को पकड़ने की कोशिश करें, आपको करना चाहिए? क्या यह केवल मैं है कि कार्यक्रम में राज्यों को निरूपित करने के लिए एक छोटा सा उपयोग करें (और उन्हें उचित रूप से दस्तावेज करें), और फिर इस जानकारी का उपयोग बाहर मान्यता सत्यापन उद्देश्यों (सब कुछ ठीक / त्रुटि से निपटने) के लिए करें?
अद्यतन: मैं मुख्य वर्गीकरण के लिए एक घातक / गैर-घातक अपवाद की उम्मीद कर रहा था, लेकिन मैं इसे शामिल नहीं करना चाहता था ताकि उत्तरों को पूर्वग्रहित न करूं। मुझे स्पष्ट करें कि प्रश्न क्या है: अपवादों को संभालना, अपवादों को फेंकना नहीं। वांछित प्रभाव क्या है: एक त्रुटि का पता लगाएं, और इससे उबरने का प्रयास करें। यदि वसूली संभव नहीं है, तो सबसे सार्थक प्रतिक्रिया प्रदान करें।
फिर से, http प्राप्त / पोस्ट उदाहरण के साथ, सवाल यह है कि क्या आपको एक नया ऑब्जेक्ट प्रदान करना चाहिए जो बताता है कि मूल कॉलर का क्या हुआ? यदि यह सहायक आपके द्वारा उपयोग किए जा रहे पुस्तकालय में था, तो क्या आप इसे ऑपरेशन के लिए एक स्थिति कोड प्रदान करने की अपेक्षा करेंगे, या क्या आप इसे एक कोशिश-पकड़ ब्लॉक में शामिल करेंगे? यदि आप इसे डिजाइन कर रहे हैं , तो क्या आप एक स्थिति कोड प्रदान करेंगे या एक अपवाद फेंक देंगे और ऊपरी स्तर को इसके बजाय एक स्थिति कोड / संदेश में अनुवाद करने देंगे?
सिनॉप्सिस: यदि आप एक अपवाद का उत्पादन करने के बजाय कोड का एक टुकड़ा कैसे चुनते हैं, तो किसी भी परिणाम के साथ एक स्थिति कोड देता है?