SpringMVC異常處理
1.1. 異常處理思路
系統中異常包括兩類:預期異常和運行時異常RuntimeException,前者通過捕獲異常從而獲取異常信息,後者主要通過規範代碼開發、測試通過手段減少運行時異常的發生。
系統的dao、service、controller出現都通過throws Exception向上拋出,最後由springmvc前端控制器交由異常處理器進行異常處理,如下圖:
------------------------------------------------------------------------------------------------------------------------
/**
* 異常處理器的自定義的實現類
* @author lx
*
*/
public class CustomExceptionResolver implements HandlerExceptionResolver{
public ModelAndView resolveException(HttpServletRequest request,
HttpServletResponse response, Object obj,
Exception e) {
// TODO Auto-generated method stub 發生異常的地方 Serivce層 方法 包名+類名+方法名(形參) 字符串
//日誌 1.發布 tomcat war Eclipse 2.發布Tomcat 服務器上 Linux Log4j
ModelAndView mav = new ModelAndView();
//判斷異常為類型
if(e instanceof MessageException){
//預期異常
MessageException me = (MessageException)e;
mav.addObject("error", me.getMsg());
}else{
mav.addObject("error", "未知異常");
}
mav.setViewName("error");
return mav;
}
}
----------------------------------------------------------
package com.itheima.springmvc.exception;
public class MessageException extends Exception{
private String msg;
public MessageException(String msg) {
super();
this.msg = msg;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
}
-----------------------------------------------------------------------------------------------1.1. 異常處理器配置
在springmvc.xml中添加:
<!-- 配置全局異常處理器 -->
<bean
id="customHandleException" class="cn.itcast.ssm.exception.CustomHandleException"/>
SpringMVC異常處理