Thursday, 15 April 2010

java - how to not print exception by using HandlerExceptionResolver -


  सार्वजनिक वर्ग AtrExceptionResolver लागू होते हैंडलरएक्सप्शन रिसोलर {निजी अंतिम स्थैतिक लॉग लॉग = LogFactory.getLog (AtrExceptionResolver.class); @ ओवरराइड पब्लिक मॉडल एंडव्यू समाधान एक्सपेशन्शन (एचटीटीपीएसएआरलेट अनुरोध अनुरोध, एचटीटीपी सर्वलर प्रतिसाद, ऑब्जेक्ट हैंडलर, अपवाद पूर्व) {बूलियन एजेक्सरेक्वेस्ट = फॉल्स; If (request.getRequestURI ()। IndexOf ("/ ajax /") & gt; 0) ajaxrequest = true; अगर (एक्सप्रेशन ऑफ़ एट्रेएक्सेप्शन) {एट्रिक्स एक्सप्रेशन एआरई = (एट्रे एक्सडेपशन) पूर्व; Log.error ("AtrException: कोड:" + atrE.getCode () + ", desc:" + atrE.getMsg (), पूर्व); अगर (अजाक्सरेक्स्ट) {प्रिंटवर्टर आउट = नल; {Out = response.getWriter () का प्रयास करें; Out.print ("{\" ई \ ": \" "+ atrE.getCode () +" \ ", \" message \ ": \" "+ atrE.getMsg () +" \ "}"); out.flush (); } पकड़ (IOException ई) {// TODO ऑटो-जेनरेट कैच ब्लॉक e.printStackTrace (); } अंत में {out.close (); }} और {कोशिश {goToError (अनुरोध, प्रतिक्रिया); } पकड़ (अपवाद ई) {// TODO स्वत: उत्पन्न होल्डिंग ब्लॉक e.printStackTrace (); }}} और {लॉग। आतंक ("अपवाद: desc:" + ex.getMessage (), पूर्व); अगर (अजाक्सरेक्स्ट) {प्रिंटवर्टर आउट = नल; {Out = response.getWriter () का प्रयास करें; बाहर। प्रिंट ("{\" ई \ ": \" 3 \ ", \" message \ ": \" सिस्टम त्रुटि \ "}"); out.flush (); } पकड़ (IOException ई) {// TODO ऑटो-जेनरेट कैच ब्लॉक e.printStackTrace (); } अंत में {out.close (); }} और {कोशिश {goToError (अनुरोध, प्रतिक्रिया); } पकड़ (अपवाद ई) {// TODO स्वत: उत्पन्न होल्डिंग ब्लॉक e.printStackTrace (); }}} वापसी नल; } निजी शून्य goToError (HttpServletRequest अनुरोध, HttpServletResponse प्रतिक्रिया) अपवाद फेंकता {response.sendRedirect (request.getContextPath () + "/jsp/error.jsp"); }  

atrException स्वयं द्वारा परिभाषित है, इसलिए मैं कंसोल में StackTrace () को मुद्रित नहीं करना चाहता। केवल लॉग इन में प्रिंट करें। मैं इसे डिबग करता हूं, इसे प्रिंट किया गया मानकवापपरवलवेल। atrException को कंसोल में कैसे मुद्रित नहीं किया जाए?

अगर मैं आपका प्रश्न समझता हूं तो आप एक स्ट्रिंग ऑब्जेक्ट में अपवाद स्टैक ट्रेस चाहते हैं, जिसे आप लॉगिंग के लिए उपयोग कर सकते हैं।

आप नीचे विधि का उपयोग कर सकते हैं।

  सार्वजनिक स्ट्रिंग getErrorLog (थ्रोएबल फेंकने योग्य) { अगर (throwable! = नल) {StringWriter त्रुटियाँ = नया StringWriter (); Throwable.printStackTrace (नया प्रिंट वाइटर (त्रुटियों)); वापसी त्रुटियां। ToString (); }     वापसी ""; }  

लौटाया गया मूल्य स्टैक ट्रेस है जिसे आप लॉग कर सकते हैं।


No comments:

Post a Comment