मैं एक हरे रंग का डेवलपर हूं जो एक बड़े बहु-परत जावा एप्लिकेशन में त्रुटि प्रबंधन पर हैंडल (हर-हर) प्राप्त करने का प्रयास कर रहा है। ऐसी कई स्थितियां हैं जहां मेरा मानना है कि कई परतों के माध्यम से अपवादों का सामना करना एक अच्छा विचार है; जैसे जब निम्नतम स्तर पर कुछ बाहरी सेवा से बाहर बुला में एक विफलता समस्याओं सभी तरह ध्यान में रखते हुए ऊपर का कारण बनता है:जब जंजीर अपवाद लॉग इन करें?
- सामग्री एक्स अनुरोध किया, लेकिन उपयोगकर्ता अधिकृत नहीं है
- की वजह से: अधिकृत की सूची उन रिक्त है
- वजह से द्वारा: उपयोगकर्ता के प्रबंधन वेब सेवा प्रतिक्रिया व्यक्त बुरा अनुरोध पैरामीटर foo 'xyz'
- की वजह से: अधिकृत की सूची उन रिक्त है
सबसे महत्वपूर्ण अपवाद, जिसकी स्टैक्स्ट्रेस मैं वास्तव में जांचना चाहता हूं, श्रृंखला में आखिरी है; कि मैंने एक बुरा अनुरोध किया है और मुझे foo के स्वरूपण को ठीक करने की आवश्यकता है। लेकिन जब मैंने परतों के माध्यम से इस अपवाद को उछाल दिया, तो प्रत्येक परत के लिए अर्थपूर्ण अपवादों में अच्छी तरह से बंधे हुए ... जब मैं अंततः चीज़ को पकड़ता और लॉग करता हूं, तो डिफ़ॉल्ट लॉगिंग व्यवहार हमेशा मुझे बाहरीतम अपवाद के बारे में विस्तार से दिखाता है, और मूल कारण के stacktrace की शायद 5 लाइनें।
यह मुझे अपवादों को लॉग इन करना चाहता है, और उन्हें बुलबुला करने दें, लेकिन फिर आप अधिकतर चीज़ों को दो बार लॉगिंग करते हैं; जब वे होते हैं और अंततः उन्हें पकड़ा जाता है।
यहां सबसे अच्छा अभ्यास क्या है?
इस पर बहुत सारी राय होगी, लेकिन कोई 'सत्य' नहीं है। चुनें कि आपके लिए क्या काम करता है, लोग इससे कोई फर्क नहीं पड़ता कि आप क्या चुनते हैं। (व्यक्तिगत रूप से मैं इस बात को फिर से भरना पसंद करता हूं बाहरीतम परत और इसे वहां लॉग करें) – Friso