जावा और .NET में अपवादों के साथ काम करना और अपवादों को कैसे / कब / क्यों / कब पकड़ना है, इसके बारे में बहुत सारे लेख पढ़ने के बाद , मैं अंत में निम्नलिखित चरणों के साथ आया, जो मैं अपने सिर से गुजरता हूं जब भी मैं एक संभावित अपवाद देखता हूं, या एक अपवाद मुझे (जावा) पकड़ना चाहिए ... भले ही ऐसा कभी न हो (आह ...)। और यह काम करने लगता है, कम से कम मेरे लिए:
- क्या कुछ उपयोगी है जो मैं उस अपवाद के साथ कर सकता हूं, (लॉगिंग को छोड़कर)? यदि उत्तर हाँ है, तो वर्कअराउंड कोड लिखें, और यदि वर्कअराउंड अपवाद फेंक सकता है, तो 2 पर जाएं:
- अपवाद को रनटाइम अपवाद के आसपास लपेटें, इसे फेंकें, 3 पर जाएं।
- उच्च-स्तरीय वर्ग में जहां एक संभावित डेटाबेस / प्रक्रिया लेनदेन शुरू किया गया है, अपवाद को पकड़ें, लेन-देन को रोलबैक करें, अपवाद को हटा दें।
- शीर्ष स्तर के वर्ग में (जो लेनदेन शुरू किया गया हो सकता है), लॉगिंग ढाँचे का उपयोग करके अपवाद को लॉग करें जैसे कि slf4j ( उदाहरण के लिए log4j के साथ युग्मित ), या log4net । यदि संभव हो, तो सीधे वितरण सूची के अपवाद को ईमेल करें जो एप्लिकेशन के डेवलपर्स से बना है।
- यदि कोई GUI है, तो सबसे अधिक उपयोगकर्ता के अनुकूल तरीके से एक त्रुटि संदेश प्रदर्शित करें जो समस्या का कारण बना; अपवाद / स्टैकट्रेस प्रदर्शित न करें, उपयोगकर्ता परवाह नहीं करता है और यह जानने की आवश्यकता नहीं है कि यह NullPointerException थी।
मुझे चरण 0 को भी जोड़ना चाहिए , जहां मैं जानबूझकर फेंक रहा हूं जिसे मैं "व्यवसाय" अपवाद कहता हूं (एक नया अपवाद जो मैं "अपवाद" वर्ग का विस्तार करके बनाता हूं) जब डेटा त्रुटियों के कारण कुछ जटिल उपचार को निष्पादित नहीं किया जा सकता है, लेकिन जो। विश्लेषण के दौरान अपवाद मामलों के रूप में पहचाने जाने के रूप में होने के लिए जाना जाता है।
लॉगिंग भाग को छोड़कर, मैं "मेरीरा" द्वारा लिखे गए बिंदुओं से पूरी तरह सहमत हूं; मैं सिर्फ इतना जोड़ूंगा कि अपवाद केवल एक बार लॉग इन होना चाहिए ।
इसके अलावा, मेरे द्वारा सूचीबद्ध कदम भिन्न हो सकते हैं यदि आप जो लिख रहे हैं वह एक एपीआई / फ्रेमवर्क है । वहाँ, अच्छी तरह से डिज़ाइन किए गए अपवादों को फेंकना डेवलपर्स को उनकी गलतियों को समझने में मदद करने के लिए अनिवार्य है।
अपवादों के परीक्षण के लिए, नकली वस्तुओं का उपयोग करते हुए आपको लगभग हर चीज का परीक्षण करने में सक्षम होना चाहिए, यह अपवाद-अल या नहीं होना चाहिए, बशर्ते कि आपकी कक्षाएं "सबसे अच्छा काम करने के लिए एक वर्ग" का सम्मान करें। मैं व्यक्तिगत रूप से "निजी" के बजाय "संरक्षित" के रूप में सबसे महत्वपूर्ण लेकिन छिपे हुए तरीकों को चिह्नित करना सुनिश्चित करता हूं ताकि मैं उन्हें बहुत अधिक परेशानी के बिना परीक्षण कर सकूं। इसके अलावा, अपवादों का परीक्षण सरल है, बस अपवाद को उत्तेजित करें और इसे पकड़ने के द्वारा होने वाले अपवाद की "अपेक्षा" करें। यदि आपको कोई अपवाद नहीं मिलता है, तो आपके पास एक यूनिट टेस्ट केस त्रुटि है।