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;
}
}
测试图