image.png
1.自定义异常类

继承Exception类
定义一个message属性用于存放异常信息
构造函数有一个message参数,声明该异常时必须传入异常信息
public class MyException extends Exception{
    String message;

    @Override
    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    /**
     * message:创建一个异常时,必修传入该异常的信息
     */
    public MyException(String message) {
        this.message = message;
    }
}

2.自定义异常处理类

必须实现HandlerExceptionResolver接口,并实该接口的处理异常的方法resolveException
//编写自己的异常处理器类,必须实现HandlerExceptionResolver接口
public class MyExceptionResolve implements HandlerExceptionResolver {

    /**
     *
     * @param httpServletRequest
     * @param httpServletResponse
     * @param o
     * @param e:程序中抛出的异常对象
     * @return 返回值是ModelAndView,传入键值对类型的信息,和要返回的页面
     */
    @Override
    public ModelAndView resolveException(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) {
        MyException myException=null;

        //如果程序抛出的异常是自定义的异常,就直接拿过来处理
        if (e instanceof MyException){
            myException=(MyException) e;
        } else {
            //如果不是,就声明一个自定义的异常,并传入抛出的异常暂时无法处理的信息
            myException=new MyException("系统正在维护");
        }
        ModelAndView modelAndView=new ModelAndView();
        modelAndView.addObject("errormsg",myException.getMessage());
        modelAndView.setViewName("error");
        return modelAndView;
    }
}

错误页面

<html>
<head>
    <title>出错</title>
</head>
<body>
    ${errormsg}  <%--直接展示存到ModelAndView中的错误信息--%>
</body>
</html>

dali
10 声望0 粉丝

引用和评论

0 条评论