आइटम this लेख राज्यों में संख्या 6:अगर इसे संभाला नहीं जाता है, या एक नया अपवाद बनाते हैं तो उसी अपवाद को फेंक दें?
नहीं कीमत की वजह से अपवाद फिर से फेंकने के लिए प्रयास करें। Bu अगर फिर से फेंकना आवश्यक था, तो के बजाय एक नया अपवाद बनाकर उसी अपवाद को फिर से फेंक दें। यह अतिरिक्त प्रदर्शन लाएगा। आप उस अपवाद में प्रत्येक परत में अतिरिक्त जानकारी जोड़ सकते हैं।
अच्छा लेकिन यह परतों को अलग करने का उल्लंघन करता है, है ना?
चलो कहते हैं कि मैं जो एक SQLException फेंकता डीएओ की एक विशिष्ट कार्यान्वयन करते
की मेरी सेवा परत मान लीजिए (या व्यापार परत ..) डीएओ परत से एक विधि कहता है, लेकिन अपवाद को संभालने के लिए नहीं करने का फैसला फेंक दिया।
यदि मैं दृश्य परत पर SQLException को फिर से फेंक देता हूं, तो मेरा व्यू लेयर न केवल डीएओ परत के साथ जोड़ा जाएगा, है ना?
क्या यह एक नया अपवाद फेंकने का अधिकार नहीं है, ताकि दृश्य पर निर्भर हो, नीचे एक स्तर पर, और दो नहीं?
प्रदर्शन को छोड़कर, उसी अपवाद को फेंकने के क्या फायदे हैं?
इस पर निर्भर करता है कि आप इसे कैसा पकड़ते हैं। यदि आप शीर्ष-परत पर थ्रोबल को पकड़ते हैं और एक स्टैक ट्रेस और संदेश प्रिंट करते हैं तो आप कुछ भी उल्लंघन नहीं कर रहे हैं (आपका शीर्ष स्तर केवल थ्रोबल पर निर्भर करता है)। यदि आप डीएओ विशिष्ट अपवाद को पकड़ते हैं तो कुछ ख़राब हो रहा है। – Pace
हां, यह मूर्खतापूर्ण सलाह है। यदि आपको पुनर्स्थापित करने की आवश्यकता है, तो एपीआई के उस स्तर के लिए अर्थपूर्ण रूप से सार्थक कुछ ऐसा फेंक दें, उस पर आपका लेना पूरी तरह से उचित लगता है – pvg
मैं कल्पना नहीं कर सकता कि एक के बजाय एक नया अपवाद बनाने और फेंकने का प्रदर्शन सार्थक है किसी भी यथार्थवादी तरीके से। – Kylar