SpringMVC 中的異常處理

前言 說到SpringMVC 中的異常處理,就不得不提提java基礎中的異常了,相信你們也都不陌生,這裏就再也不概述,詳細可參考【java基礎之異常】死了都要try,不淋漓盡致地catch我不痛快!其次再來談談SpringMVC 中的異常處理。javascript

@[toc]html

咱們都知道咱們所謂的異常主要包括兩類:編譯異常和運行時異常 RuntimeException,前者經過捕獲異常從而獲取異常信息,後者主要經過規範代碼開發、測試經過手段減小運行時異常的發生。前端

實際上SpringMVC 中的異常處理的原理就是:咱們編寫的daoservicecontroller 出現異常都經過 throws Exception 向上拋出,最後由前端控制器交由HandlerExceptionResolver異常處理器進行異常處理!java

一、搭建編碼分析

接下來就是編碼階段。其主要就是自定義一個異常類和對應異常頁面,核心則是HandlerExceptionResolver異常處理器,須要自定義一個類實現HandlerExceptionResolver接口並編寫其中的方法resolveException,而後在springmvc.xml中配置。最後就是一些請求響應的業務邏輯以及頁面的搭建了。web

二、編寫異常類

編寫一個自定義異常類,繼承Exceptionspring

//自定義異常類
package com.Exception;

public class SysException extends Exception{
    //異常提示信息字段
    private String message;

    public SysException(String message){
        this.message=message;
    }

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

    public void setMessage(String message) {
        this.message = message;
    }
}
複製代碼

三、編寫自定義異常處理器

簡單來講就是自定義一個類實現HandlerExceptionResolver接口並編寫其中的方法resolveException編程

package com.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 SysExceptionResolver implements HandlerExceptionResolver {
    @Override
    public ModelAndView resolveException(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) {
        // 獲取到異常對象
        SysException sysException = null;
        if(e instanceof SysException){
            sysException = (SysException) e;
        }else{
            sysException = new SysException("系統正在維護升級ing....");
        }
        // 建立ModelAndView對象
        ModelAndView mv = new ModelAndView();
        //使用「errorMsg」存入提示信息
        mv.addObject("errorMsg",sysException.getMessage());
        mv.setViewName("error");
        return mv;
    }
}
複製代碼

四、在springmvc.xml中配置異常處理器

<!--配置異常處理器-->
<bean id="sysExceptionResolver" class="com.Exception.SysExceptionResolver"/> 複製代碼

五、編寫Error.jsp、index.jsp頁面

Error.jsp頁面設計模式

<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<html> <head> <title>Title</title> </head> <body> ${errorMsg} </body> </html>
複製代碼

index.jsp頁面併發

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html> <head> <title>Title</title> </head> <body> <h3>異常處理</h3> <a href="user/testExcepting" >異常處理連接</a> </body> </html>

複製代碼

六、編寫collector代碼模擬異常

@RequestMapping("/user/testExcepting")
    public String testException() throws SysException {
        try{
            int a=1/0;
        }catch (Exception e){
            e.printStackTrace();
            throw new SysException("查詢出現錯誤了...");
        }
        return "success";
    }
複製代碼

七、運行效果

在這裏插入圖片描述
OK,如上效果說明SpringMVC 異常處理成功!

若是本文對你有一點點幫助,那麼請點個讚唄,謝謝~mvc

最後,如有不足或者不正之處,歡迎指正批評,感激涕零!若是有疑問歡迎留言,絕對第一時間回覆!

歡迎各位關注個人公衆號,裏面有一些java學習資料和一大波java電子書籍,好比說周志明老師的深刻java虛擬機、java編程思想、核心技術卷、大話設計模式、java併發編程實戰.....都是java的聖經,不說了快上Tomcat車,咋們走!最主要的是一塊兒探討技術,嚮往技術,追求技術,說好了來了就是盆友喔...

在這裏插入圖片描述
相關文章
相關標籤/搜索