मैं बस कुछ कोड है कि इस तरह देखा समस्या से निपटने के लिए बहुत दर्दनाक समस्या निवारण अनुभव था:एक जावा विरोधी विरोधी पैटर्न को पकड़ने के बिना आखिरकार ब्लॉक है?
try {
doSomeStuff()
doMore()
} finally {
doSomeOtherStuff()
}
क्योंकि doSomeStuff() एक अपवाद है, जो बारी में doSomeOtherStuff वजह से फेंक दिया समस्या के निवारण के लिए बहुत मुश्किल था() भी फेंक एक अपवाद। दूसरा अपवाद (अंततः ब्लॉक द्वारा फेंक दिया गया) मेरे कोड पर फेंक दिया गया था, लेकिन इसमें पहले अपवाद (डूसमस्टस्ट() से फेंक दिया गया) पर एक संभाल नहीं था, जो समस्या का असली मूल कारण था।
कोड इस बजाय, समस्या तत्काल स्पष्ट हो गया होता ने कहा था कि यदि:
try {
doSomeStuff()
doMore()
} catch (Exception e) {
log.error(e);
} finally {
doSomeOtherStuff()
}
तो, मेरे सवाल यह है:
एक अंत में किसी भी कैच ब्लॉक एक अच्छी तरह से बिना इस्तेमाल किया खंड है ज्ञात जावा विरोधी पैटर्न? (यह निश्चित रूप से स्पष्ट रूप से जाने-माने विरोधी पैटर्न का एक स्पष्ट रूप से स्पष्ट उप-वर्ग नहीं है "अपवादों को घुमाओ मत!")
[सी # में पकड़ने के बिना प्रयास करें] पर एक समान प्रश्न भी देखें (http://stackoverflow.com/questions/128818/why-is-try-finally-good-try-catch-bad) - एक ही तर्क लागू होते हैं। – avandeursen