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!
推薦閱讀:
- SpringBoot @ExceptionHandler與@ControllerAdvice異常處理詳解
- 詳解SpringMVC中的異常處理
- SpringBoot全局異常處理方式
- SpringBoot定制三種錯誤頁面及錯誤數據方法示例
- SpringMVC數據頁響應ModelAndView實現頁面跳轉