SpringBoot配置GlobalExceptionHandler全局異常處理器案例

1. 創建全局異常處理器類GlobalExceptionHandler

@ControllerAdvice: 定義統一的異常處理類,捕獲 Controller 層拋出的異常。如果添加 @ResponseBody 返回信息則為JSON格式,這樣就不必在每個Controller中逐個定義AOP去攔截處理異常。
@RestControllerAdvice: 相當於 @ControllerAdvice 與 @ResponseBody 的結合體。
@ExceptionHandler: 統一處理一種類的異常,減少代碼重復率,降低復雜度。

@ControllerAdvice
public class GlobalExceptionHandler {
    //@ExceptionHandler 該註解聲明異常處理方法,  ModelAndView mv
    @ExceptionHandler(value = Exception.class)
    public ModelAndView myHandler(Exception e, HttpServletRequest request, HttpServletResponse response) {
        System.out.println("GlobalExceptionHandler全局異常處理器捕獲");
        ModelAndView mv = new ModelAndView();

        mv.addObject("message", e.getMessage());         //異常錯誤信息提示
        mv.addObject("url", request.getRequestURI());    //異常請求的url地址
        mv.addObject("status", response.getStatus());    //獲取狀態碼
        mv.setViewName("/pages/exception/error");    //異常的視圖名稱
        return mv;
    }
}

【註意】基於@ControllerAdvice註解的全局異常統一處理隻能針對於Controller層的異常。也就是隻能捕獲到Controller層的異常,在service層或者其他層面的異常都不能捕獲。

2. 創建controller測試出現異常情況

    //測試異常處理
    @GetMapping(path = "/exception")
    public String toException() {
        System.out.println("toException");
        //throw new Exception();
        int i =1/0;
        System.out.println("toException end");
        
        return "/pages/company/company_list";
    }

編寫html頁面顯示錯誤信息

<!-- 統一異常處理頁面 -->
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org" >
<head>
	<title>出現錯誤啦</title>
</head>
<body>
<div class="content-container">
    <div class="head-line">
        <img src="../img/error.jpg" alt="" width="120"/>
    </div>
    <div class="subheader">
        <span name="message" th:text="${status}"/>,頁面走丟啦<br/>
        <p style="font-size: 16px">
            原因:<font color="red" size="20px"><span name="message" th:text="${message}"/></font><br/>
            地址:<a th:href="${url}" rel="external nofollow" ><span name="url" th:text="${url}"/></a><br/>
        </p>

    </div>
    <div class="hr"></div>
    <div class="context">

        <p>您可以返回上一頁重試,或直接向我們反饋錯誤報告
            <br/>
            聯系地址:<a href="https://striveday.blog.csdn.net/" rel="external nofollow"  >String_day</a><br/>
            聯系電話:<span>18828886888</span>
        </p>

    </div>
</body>
</html>

訪問錯誤查看跳轉頁面

http://localhost:8000/OnlineMall/page/exception

在這裡插入圖片描述

在這裡插入圖片描述

到此這篇關於SpringBoot配置GlobalExceptionHandler全局異常處理器案例的文章就介紹到這瞭,更多相關SpringBoot配置GlobalExceptionHandler內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: