spring設置全局異常處理器


1.spring設置全局異常,它的原理是向上捕獲

spring.xml配置

   <!--自定義全局異常處理器-->
<bean id="globalExceptionResolver" class="com.data.controller.exception.GlobalExceptionResolver"/>
import com.data.service.email.EmailMessage;
import com.data.utils.constant.AliasConstant;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView;


@Controller
public class GlobalExceptionResolver implements HandlerExceptionResolver {

@Resource
EmailMessage emailMessage;

/**
* 進行全局異常過濾並處理
*
* @param request action 請求
* @param response 服務器響應
* @param handler 發生錯誤的事件句柄
* @param ex 異常情況
* @return 視圖&對象
*/

@Override
public ModelAndView resolveException(HttpServletRequest request,
HttpServletResponse response,
Object handler, Exception ex) {
//使用StringBuilder提搞GC回收效率,降低垃圾回收開銷
StringBuilder content = new StringBuilder("<++>AllInOne-busWeb抓捕到異常具體內容信息:<++> \t\n");
String userId
= (String) request.getSession().getAttribute(AliasConstant.UserId);
content.append(
"造成該異常的用戶userID為: " + userId + " \t\n");
content.append(
"爆出異常的類型為: " + ex.getClass() + " \t\n");
content.append(
"異常發生的位置為: " + handler + " \t\n");
content.append(
"造成的原因: " + ex.getMessage() + " \t\n");
content.append(
"造成的詳細原因為:\t\n\n");
StackTraceElement[] trace
= ex.getStackTrace();
for (StackTraceElement traceElement : trace)
content.append(
"at\t " + traceElement + "\t\n");
return null;
}
}

 


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
  © 2014-2022 ITdaan.com