मैंने पहले कभी कोई गंभीर जावा कोडिंग नहीं की थी, लेकिन मैंने अपने मौजूदा कौशल (डेल्फी और सी #) के आधार पर वाक्यविन्यास, पुस्तकालयों और अवधारणाओं को सीखा। एक बात जो मुझे शायद ही समझ में आती है, वह यह है कि मैंने इतना कोड देखा है कि चुपचाप printStackTrace
इस तरह के अपवादों का उपभोग करते हैं :
public void process() {
try {
System.out.println("test");
} catch(Exception e) {
e.printStackTrace();
}
}
इसी तरह का कोड लगभग हर जावा लेख और परियोजना में एक है जैसे मैं भाग गया। मेरे ज्ञान के आधार पर यह बहुत बुरा है। अपवाद को हमेशा इस तरह बाहरी संदर्भ में भेजा जाना चाहिए:
public void process() {
try {
System.out.println("test");
} catch(Exception e) {
e.printStackTrace();
throw new AssertionError(e);
}
}
ज्यादातर समय अपवाद को सबसे बाहरी लूप में संभाला जाना चाहिए जो अंतर्निहित ढांचे (उदाहरण के लिए जावा स्विंग) से संबंधित है। यह जावा दुनिया में इस तरह कोड करने के लिए आदर्श क्यों दिखता है? मैं चकरा गया हूं।
अपनी पृष्ठभूमि के आधार पर, मैं पूरी तरह से PrintStackTrace को निकालना पसंद करूंगा । मैं बस एक अनहेल्ड उर्फ RuntimeException
(या, और भी बेहतर AssertionError
) के रूप में फिर से उखाड़ फेंकूंगा , फिर इसे पकड़कर सबसे उपयुक्त स्थान पर लॉग इन करूंगा : फ्रेमवर्क सबसे बाहरी लूप।
public void process() {
try {
System.out.println("test");
} catch(Exception e) {
throw new AssertionError(e);
}
}