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

在這裏插入圖片描述
測試圖
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章