मान लें कि कोड के इस टुकड़े 20 स्थानों में है और हमेशा एक हीपकड़ने अलग अपवादों या instanceof का उपयोग करें - जावा 6
try {
// do something
} catch (FirstException e) {
// log it
} catch (SecondException e) {
// log it
}
बेहतर उपयोग करने के लिए इस या instanceof
की तरह कुछ नहीं है अच्छा समाधान नहीं होगा?
try {
// do something
} catch(Exception e) {
logException(e);
}
void logException(Exception e) {
if (e instanceof FirstException) {
// log it
} else if (e instanceof SecondException) {
// log it differently
} else {
// do something with other exception
}
}
केवल बात यह है कि मैं वास्तव में समाधान के बारे में नफरत Exception
पकड़ने जो definitelly सबसे अच्छा तरीका नहीं है ... क्या कोई बेहतर तरीका है?
मैं पहले दृष्टिकोण का उपयोग करता हूं और पकड़े गए सभी अपवादों के लिए logException को कॉल करता हूं। – Thihara
क्या होगा यदि 'FileNotFoundException' फेंक दिया गया था !!! – Azodious
प्रत्येक अपवाद को अलग-अलग पकड़ना केवल तभी समझ में आता है जब आप प्रत्येक के लिए अलग-अलग प्रक्रिया करना चाहते हैं। असली दुनिया के अनुप्रयोगों में, यह शायद ही कभी मामला है। व्यवहार्य दृष्टिकोण सुपरक्लास 'अपवाद' या 'थ्रोबल' का उपयोग करके सभी को पकड़ना है यदि रनटाइम त्रुटियां एक प्रमुख चिंता हैं और ** उन्हें ** सही ढंग से लॉग इन करें ताकि डेवलपर को समझ सकें कि वास्तव में क्या हुआ और वास्तव में क्या हुआ। – Vrushank