पहला संकलन नहीं करता है क्योंकि विधि error
पहले पैरामीटर के रूप में String
को स्वीकार करता है और Throwable
दूसरे पैरामीटर के रूप में स्वीकार करता है।
e.getMessage()
Throwable
नहीं है।
कोड
} catch (SomeException e) {
// No stack trace
logger.error("Noinstance available! " + e.getMessage());
}
होना चाहिए
} catch (SomeException e) {
// Prints message and stack trace
logger.error("Noinstance available!", e);
}
पहले प्रिंट केवल संदेश के साथ तुलना में। दूसरा प्रिंट भी पूरे स्टैक ट्रेस।
यह स्टैक ट्रेस मुद्रित करने के लिए आवश्यक है या नहीं, संदर्भ से निर्भर करता है।
यदि आप पहले ही जानते हैं कि एक अपवाद क्यों फेंक दिया जा सकता है तो पूरे स्टैक ट्रेस को प्रिंट करना एक अच्छा विचार नहीं है।
यदि आप नहीं जानते हैं, तो आसानी से त्रुटि खोजने के लिए पूरे स्ट्रैक ट्रेस को मुद्रित करना बेहतर है।
स्रोत
2015-09-29 09:28:49
लगभग हर समय। जब तक आप कुछ अपवाद और अतिसंवेदनशील टूस्ट्रिंग विधि को नहीं जानते। E.getMessage() मानक तरीका –
है यदि आप केवल संदेश लॉग करते हैं, तो आपको स्टैक ट्रेस नहीं मिलता है, या नेस्टेड अपवाद होना चाहिए। अपवाद लॉग इन करें ... –
@TheNeoNoir डेवलपर: "लगभग हर समय" क्या? सबसे पहला? मैं इस बारे में जानकारी खोना पसंद नहीं करता कि अपवाद कहां से आया था, इसका कारण इत्यादि। –