SpringMVC異常處理
1. 異常處理的思路
系統(tǒng)中異常包括兩類(lèi):編譯時(shí)異常和運(yùn)行時(shí)異常仗扬,前者通過(guò)捕獲異常從而獲得異常信息,后者主要通過(guò)規(guī)范代碼開(kāi)發(fā)宽闲、測(cè)試通過(guò)手段減少運(yùn)行時(shí)異常的發(fā)生肃廓。
系統(tǒng)的dao挎峦、service缀程、controller出現(xiàn)都通過(guò)throws Exception向上拋出搜吧,最后由SpringMVC前端控制器交由異常處理器進(jìn)行異常處理。
異常處理流程
2.實(shí)現(xiàn)步驟
????2.1 編寫(xiě)異常類(lèi)和錯(cuò)誤頁(yè)面
package com.llb.exception;
/**異常類(lèi)
* Ceate By llb on 2019/8/21
*/
public class SysException extends Exception {
private String msg ;
public SysException(String msg) {
this.msg = msg;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
}
錯(cuò)誤頁(yè)面:
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h1>網(wǎng)絡(luò)去旅行了</h1>
${msg}
</body>
</html>
????2.2 自定義異常處理器
package com.llb.exception;
import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* 處理異常業(yè)務(wù)邏輯
* Ceate By llb on 2019/8/21
*/
public class SysExceptionResolve implements HandlerExceptionResolver {
@Override
public ModelAndView resolveException(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object obj, Exception ex) {
//獲取到異常
SysException e = null;
if (ex instanceof SysException){
e = (SysException) ex;
}else{
e = new SysException("系統(tǒng)正在維護(hù)");
}
//創(chuàng)建ModelAndView對(duì)象
ModelAndView mv = new ModelAndView();
mv.addObject("msg", e.getMsg());
mv.setViewName("exception");
return mv;
}
}
????2.2 配置異常處理器
springmvc.xml中配置:
<!--配置異常處理器:自定義的異常處理器-->
<bean id="sysExceptionResolve" class="com.llb.exception.SysExceptionResolve"></bean>
????2.3 運(yùn)行結(jié)果
運(yùn)行結(jié)果
源碼:github