2012-05-20 37 views
7

को संभालने के लिए जहां मैं स्ट्रूट्स, स्प्रिंग और हाइबरनेट का उपयोग करके एक एप्लिकेशन विकसित करता हूं।वसंत डेटाAccessException

मेरा डीएओ वसंत जेडीबीसी का उपयोग करता है और इसकी सभी विधि DataAccessException (जो अनचेक है) फेंकता है।

मुझे इन अपवादों को कहां संभालना चाहिए? मुझे पता है कि यह एक अनचाहे अपवाद है लेकिन मुझे लगता है कि अगर डीबी या उसके कनेक्शन में कोई समस्या है तो मुझे उपयोगकर्ता को बताना होगा।

मुझे लगता है कि मुझे नियंत्रक द्वारा पकड़े जाने के लिए मेरी सेवा कक्षा विधियों से DataAccessException को पुनर्स्थापित करना चाहिए। क्या यह एक अच्छा अभ्यास है?

मैंने स्प्रिंग पैकेज से नमूने देखे हैं और डोमेन या सेवा क्षेत्र में कोई अपवाद प्रबंधन नहीं मिला है। दाओ क्षेत्र छोड़ने के बाद DataAccessException को अनदेखा किया जा रहा है।

कृपया इस मामले के लिए एक अच्छा डिजाइन सुझाव दें।

+0

की [मैं सेवा परत में सीधे वसंत DataAccessException उपयोग कर सकते हैं] संभव डुप्लिकेट (http://stackoverflow.com/questions/10672879/can-i-use-spring-dataaccessexception-directly-in-service-layer) – Raedwald

उत्तर

13

दाओ क्षेत्र छोड़ने के बाद DataAccessException को अनदेखा किया जा रहा है।

और यह एक अच्छी बात है! इसे पूरे ढेर के माध्यम से उड़ने दें। आपके पास शायद सेवा परत पर लेनदेन हो - अपवाद पारदर्शी रूप से बाहरी लेनदेन को लुढ़काए जाने का कारण बन जाएगा। महान!

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

अंत में, यदि स्ट्रैट्स भी अपवाद को संभाल नहीं सकते हैं, तो इसे कंटेनर पर पुनर्स्थापित कर दिया जाएगा, जिसके कारण अपवाद विवरण वापस लौटाए जा रहे हैं।

जैसा कि आप देख सकते हैं कि आप कई स्तरों पर अपवादों को नियंत्रित कर सकते हैं, आमतौर पर कम बेहतर होता है।

+0

यह एक उत्कृष्ट प्रतिक्रिया है। Cudos! – markthegrea