आम तौर पर, लोगों ने इस तरह के अपवादों को दूर करने वाले लोगों द्वारा बर्बाद कर दिए हैं।
मेरा सुझाव है अपवादों के साथ कुछ बुनियादी नियमों का पालन:
आप पूर्णतः सुनिश्चित आप एक जाँच अपवाद के साथ एक समस्या का कारण कभी नहीं होगा सिर्फ इतना है कि अपवाद को पकड़ने और टिप्पणी आप वास्तव में क्यों इसे संभाल की जरूरत नहीं है कर रहे हैं । (नींद एक इंटरप्टेड एक्सेप्शन फेंकता है जिसे आप हमेशा अनदेखा कर सकते हैं जब तक कि आप वास्तव में इसमें रूचि रखते हैं, लेकिन ईमानदारी से यह एकमात्र मामला है जिसे मैं आमतौर पर अनदेखा करता हूं - यहां तक कि यदि आप इसे कभी नहीं प्राप्त करते हैं, तो इसे लॉगिंग करने की लागत क्या है?)
यदि आप सुनिश्चित नहीं हैं, लेकिन आप इसे कभी-कभी प्राप्त कर सकते हैं, तो केवल एक स्टैक ट्रेस को पकड़ें और लॉग करें ताकि यदि कोई समस्या हो रही है, तो यह पाया जा सकता है। फिर, केवल अपवाद को पकड़ें जिसकी आपको आवश्यकता है।
यदि आपको कोई भी तरीका दिखाई नहीं देता है तो चेक अपवाद फेंक दिया जा सकता है, इसे पकड़ें और इसे एक अनचेक अपवाद के रूप में फिर से फेंक दें।
यदि आप जानते हैं कि अपवाद का कारण क्या है, तो इसे पकड़ें और ठीक से लॉग इन करें, आपको इस मामले में एक स्टैक ट्रेस की ज़रूरत नहीं है यदि आप इस बात के बारे में बहुत स्पष्ट हैं कि इसका क्या कारण है (और आप कक्षा का उल्लेख कर सकते हैं अगर आप लॉग 4j या कुछ का उपयोग नहीं कर रहे हैं तो यह लॉगिंग कर रहा है।
ऐसा लगता है कि आपकी समस्या अंतिम श्रेणी में आ जाएगी, और इस तरह की पकड़ के लिए, जो भी आपने लिखा है (अपवाद ई), हमेशा करें विशिष्ट अपवाद केवल कुछ अनचेक अपवाद फेंक दिया जाता है (खराब पैरामीटर, शून्य सूचक, ...)
अद्यतन: यहां मुख्य समस्या यह है कि जांच की गई जांच पेंशन अनजान हैं। वे जावा में मौजूद एकमात्र अत्यधिक उपयोग की जाने वाली भाषा है। वे सिद्धांत में साफ हैं, लेकिन कार्रवाई में वे पकड़ने और छिपाने के इस व्यवहार का कारण बनते हैं कि आपको अनचेक अपवादों के साथ नहीं मिलता है।
बहुत से लोगों ने इस तथ्य पर टिप्पणी की है कि मैंने कहा है कि उन्हें छुपाएं कभी-कभी ठीक है।विशिष्ट होना करने के लिए, एक मामले मैं के बारे में सोच सकता है:
try {
Thread.sleep(1000);
catch (InterruptedException e) {
// I really don't care if this sleep is interrupted!
}
मुझे लगता है मुख्य कारण मुझे लगता है इस का उपयोग ठीक है, क्योंकि InterruptedException के इस प्रयोग पहली जगह में जाँच अपवाद प्रतिमान का दुरुपयोग है, यह अपवाद की स्थिति को इंगित करने से अधिक नींद के परिणाम को संचारित कर रहा है।
यह भी बहुत कुछ समझ में बनाया होता है करने के लिए:
boolean interrupted=Thread.sleep(1000);
लेकिन वे अपने नए जाँच अपवाद प्रतिमान पर बहुत गर्व जब वे पहली बार जावा बनाया थे (जाहिर है ऐसा है, तो यह वास्तव में अवधारणा में साफ है - केवल विफल रहता है अभ्यास में)
मैं एक और मामला कल्पना नहीं कर सकता जहां यह स्वीकार्य है, इसलिए शायद मुझे इसे एकल केस के रूप में सूचीबद्ध करना चाहिए जहां यह अपवाद को अनदेखा करने के लिए मान्य हो सकता है।
मैंने हमेशा उन्हें अनदेखा किया है, यह देखते हुए कि इस बिंदु पर मैं डेटाबेस के साथ आमतौर पर कैसे किया जाता हूं। – Powerlord
खाली पकड़ ब्लॉक बुरा हैं। फायरिंग के लायक की तरह। और फायरिंग से, मेरा मतलब है कि हिस्सेदारी पर जल रहा है। यहां तक कि एक साधारण लॉग स्टेटमेंट पर्याप्त होगा, लोग! – erickson
जिनके पास 3 बजे उत्पादन के मुद्दे होने पर कॉल करने के लिए सूची के शीर्ष पर खाली पकड़ने वाले वक्तव्य "स्वयंसेवक" automaticaly हैं। –