जेएसपी सर्वलेट्स में सर्वोत्तम अभ्यास त्रुटि प्रबंधन

मेरे पास ओरेकल डेटाबेस पर jsp/servlets का उपयोग करके एक बहुत ही सरल वेब ऐप है। ऐप में अभी कुछ हद तक पेज हैं, हालांकि यह बढ़ रहा है।

अभी तक, मेरे पास कुछ भी नहीं है जो उपयोगकर्ताओं की त्रुटियों को दिखाता है। उदाहरण के लिए, यदि डेटाबेस कनेक्शन विफल रहता है, तो पृष्ठ बस खाली है। मैं उत्सुक हूं कि सर्वोत्तम प्रथाओं में त्रुटि प्रबंधन क्या है? क्या मुझे एक स्टैक ट्रेस प्रिंट करना चाहिए? क्या सभी त्रुटियों को एक डिफ़ॉल्ट त्रुटि पृष्ठ मिलना चाहिए?

किसी भी सलाह या संदर्भ सामग्री की सराहना की जाएगी। जैसा कि आप बता सकते हैं, यह मेरे लिए नया है।

धन्यवाद

4
जाहिर है यह बहुत सारी चीजों पर निर्भर करता है, जैसे कि यह एक कंपनी इंट्रानेट या इंटरनेट पर है। इंटरनेट पर इंट्रानेट पर त्रुटि पर अधिक जानकारी दिखाने के लिए समझदारी होगी।
जोड़ा लेखक developerwjk, स्रोत

1 उत्तर

उन त्रुटियों के लिए जिन्हें अप्राप्य (जैसे डेटाबेस कनेक्टिविटी समस्याएं) माना जाता है, इस प्रकार की त्रुटियां आमतौर पर एप्लिकेशन के भीतर शीर्ष-स्तर पर पकड़ी जाती हैं और एक ही स्थान पर निपटाई जाती हैं। इंटरमीडिएट परतों से निपटने के लिए कई फ्रेमवर्क इन अनचेक किए गए निष्पादन में परिवर्तित हो जाएंगे।

इन अप्राप्य अपवादों के लिए, आमतौर पर आप उपयोगकर्ता को उपयोगकर्ता के अनुकूल और काफी सामान्य त्रुटि पृष्ठ प्रदर्शित करेंगे और एक लॉग फ़ाइल में एक स्टैकट्रैक (अधिक विस्तृत जानकारी के साथ) भेजेंगे - सिस्टम प्रशासकों और/या डेवलपर्स द्वारा पूछताछ के लिए।

सर्वलेट spec web -xml के माध्यम से त्रुटि-पृष्ठ टैग के माध्यम से त्रुटियों को संभालने का एक तरीका प्रदान करता है।

यदि आप सर्वलेट 3.0 या ऊपर का उपयोग कर रहे हैं, तो अपने web.xml में आप जोड़ सकते हैं:


    /error.html

यह सभी अनचाहे अपवादों को पकड़ लेगा और उन्हें वेबपैड की जड़ में error.html पृष्ठ पर भेज देगा।

सर्वलेट spec के पुराने संस्करणों में आपको अपवाद प्रकार या त्रुटि कोड निर्दिष्ट करना था (जिसे आप अभी भी बेहतर अनाज त्रुटि प्रबंधन के लिए कर सकते हैं):


    java.lang.Exception
    /error.html

या:


    500
    /error.html

तथा:


    404
    /notFound.html

इसके अलावा यदि आप त्रुटि पृष्ठ में गतिशील प्रसंस्करण करने की आवश्यकता है तो आप किसी अन्य जेएसपी (या अन्य सर्वलेट) पर अग्रेषित कर सकते हैं:


    500
    /WEB-INF/jsp/error.jsp

यदि आपको अपने त्रुटि पृष्ठ के अंदर से अपवाद तक पहुंचने की आवश्यकता है (शायद आप अपवाद द्वारा आयोजित कुछ विशिष्ट डेटा प्रदर्शित करना चाहते हैं - जैसे कोड) तो आप javax.servlet.error.exception के माध्यम से मूल अपवाद तक पहुंच सकते हैं। अनुरोध विशेषता:

Throwable throwable = (Throwable) request.getAttribute("javax.servlet.error.exception");

यदि आपका ऐप बढ़ रहा है, तो आप एक एमवीसी फ्रेमवर्क में स्थानांतरित करने के लिए सबसे अच्छे हो सकते हैं - जैसे स्प्रिंग एमवीसी - जो आपके ऐप को अधिक प्रबंधनीय बना देगा - साथ ही यह त्रुटि प्रबंधन के लिए लगातार और अच्छी तरह से परिभाषित तंत्र प्रदान करेगा।

4
जोड़ा
+1। जेएसपी पृष्ठों में एकमात्र चीज है कि यह स्क्रिप्टलेट से बचने के लिए बेहतर (यानी जावा कोड) है। और जेएसपी पेज में त्रुटि/अपवाद से संबंधित जानकारी तक पहुंचने के लिए, अभिव्यक्ति भाषा और निहित वस्तुएं । यहां ओपी 404 जेएसपी त्रुटि पृष्ठ का एक उदाहरण पा सकता है: जेएसपी त्रुटि पृष्ठ में अनुरोधित