1.配置SpringMVC環境
2.自定義異常
自定義異常時要繼承Exception
package cn.msg.exception;
/**
* 自定義異常
*/
public class MyException extends Exception {
private String exception;
public MyException(String exception) {
this.exception = exception;
}
public MyException() {
}
public String getException() {
return exception;
}
public void setException(String exception) {
this.exception = exception;
}
}
2.自定義異常處理器
自定義異常處理器時要實現HandlerExceptionResolver接口並重寫resolveException方法
package cn.msg.exception;
import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* 自定義異常處理器
*/
public class MyExceptionController implements HandlerExceptionResolver {
@Override
public ModelAndView resolveException(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) {
//所觸發的異常
MyException me = new MyException();
//判斷所報異常是否是MyException異常
if (e instanceof MyException){
me = (MyException)e;
}else{
me = new MyException("頁面走丟了~~~");
}
ModelAndView mv = new ModelAndView();
mv.addObject("exception",me.getException());
mv.setViewName("exceptionPage");
return mv;
}
}
3.配置springmvc.xml文件
<!--譯爲:若前端控制器發現異常,就將異常拋向自定義異常處理器MyExceptionController-->
<bean class="cn.msg.exception.MyExceptionController" id="controller"/>
4.異常頁面
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<html>
<head>
<title>Title</title>
</head>
<body>
${exception}
</body>
</html>
5.測試
測試方法:寫一個異常,看頁面是否跳轉到我們自定義的異常頁面,如果跳轉到自定義異常頁面就說明異常自定義異常成功否則失敗
package cn.msg.controller;
import cn.msg.exception.MyException;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
@Controller
@RequestMapping("/text")
public class Text {
@RequestMapping(value = "/text01")
public ModelAndView text01() throws Exception {
ModelAndView mv = new ModelAndView();
try {
int a = 10 / 0;
} catch (Exception e) {
e.printStackTrace();
throw new MyException("除數不能爲零");
}
mv.setViewName("ok");
mv.addObject("msg", "我沒有異常");
return mv;
}
}
測試圖