SpringMVC之自定义异常 05

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;
    }
}

在这里插入图片描述
测试图
在这里插入图片描述

发布了45 篇原创文章 · 获赞 47 · 访问量 1695

猜你喜欢

转载自blog.csdn.net/qq_44784185/article/details/103919427
今日推荐