मैं व्यक्तिगत रूप से निम्नलिखित विचारधारा
लपेटें विदेशी अपवाद
पसंद करते हैं एक "विदेशी" अपवाद एक अपवाद एक जावा एपीआई या किसी तीसरे पक्ष के पुस्तकालय द्वारा फेंका है। दूसरे शब्दों में, एक अपवाद जिसे आप नियंत्रित नहीं करते हैं।
सभी विदेशी अपवादों को पकड़ने और उचित अनुप्रयोग विशिष्ट अपवाद में उन्हें लपेटना बेहतर है। एक बार विदेशी अपवाद को आपके अपवाद में परिवर्तित कर दिया जाता है, तो आप उस अपवाद को किसी भी तरह से प्रचारित कर सकते हैं।
Rethrowing जांचे हुए अपवादों गन्दा
प्राप्त कर सकते हैं अपने आवेदन का उपयोग करता है अपवाद जाँच की है, तो मूल अपवाद rethrowing मतलब है कि प्रणाली यह rethrowing भी यह घोषित करना चाहिए।
कॉल पदानुक्रम के शीर्ष पर पहुंचने के करीब, अधिक अपवादों को फेंक दिया जाएगा। जब तक आप अपवाद को फेंकने के लिए बस अपने सभी तरीकों की घोषणा नहीं करते। हालांकि, यदि आप ऐसा करते हैं तो आप अनचेक अपवादों का भी उपयोग कर सकते हैं, क्योंकि आपको वास्तव में कंपाइलर अपवाद जांच से कोई लाभ नहीं मिल रहा है।
यही कारण है कि मैं पकड़ गैर आवेदन विशिष्ट अपवाद करना पसंद करते हैं और उन्हें एक आवेदन विशिष्ट अपवाद में लपेट, उन्हें प्रचार कॉल स्टैक से पहले।
रैपिंग के लिए दिशानिर्देश: संदर्भ जिसमें अपवाद होता है, अपवाद के स्थान के रूप में उतना ही महत्वपूर्ण हो सकता है। एप्लिकेशन में दिया गया स्थान विभिन्न निष्पादन पथों के माध्यम से पहुंचा जा सकता है, और निष्पादन पथ गंभीरता और त्रुटि के कारण को प्रभावित कर सकता है, यदि ऐसा होता है।
यदि आपको अपवाद में संदर्भ जानकारी जोड़ने की आवश्यकता है, तो आप कॉल स्टैक को प्रचारित करते हैं, तो आपको सक्रिय प्रसार का उपयोग करने की आवश्यकता होती है। दूसरे शब्दों में, आपको कॉल स्टैक के रास्ते पर विभिन्न प्रासंगिक स्थानों में अपवाद को पकड़ने की आवश्यकता है, और इसे संदर्भित करने या लपेटने से पहले प्रासंगिक संदर्भ जानकारी जोड़ें।
public void doSomething() throws SomeException{
try{
doSomethingThatCanThrowException();
} catch (SomeException e){
e.addContextInformation(“more info”);
throw e; //throw e, or wrap it – see next line.
//throw new WrappingException(e, “more information”);
} finally {
//clean up – close open resources etc.
}
}