在spring 3.2中,新增了@ControllerAdvice 註解,可以用於定義@ExceptionHandler、@InitBinder、@ModelAttribute,並應用到所有@RequestMapping中。@ControllerAdvice官方文檔。創建全局異常處理類:通過使用@C... ...
在spring 3.2中,新增了@ControllerAdvice 註解,可以用於定義@ExceptionHandler、@InitBinder、@ModelAttribute,並應用到所有@RequestMapping中。@ControllerAdvice官方文檔。創建全局異常處理類:通過使用@ControllerAdvice定義統一的異常處理類,而不是在每個Controller中逐個定義。@ExceptionHandler用來定義函數針對的異常類型,最後將Exception對象和請求URL映射到error.html中.
v新建異常捕獲類
統一異常處理
package com.demo.common; import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; /** * Created by toutou on 2018/12/9. */ @ControllerAdvice public class CatchGlobalException { @ExceptionHandler(value = Exception.class) public ModelAndView defaultErrorHandler(HttpServletRequest req, Exception e) throws Exception { ModelAndView mav = new ModelAndView(); mav.addObject("exception", e); mav.addObject("url", req.getRequestURL()); mav.setViewName("error"); return mav; } }
verror page
實現error.html頁面展示:在templates目錄下創建error.html,將請求的URL和Exception對象的message輸出。
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org" > <head lang="en"> <meta charset="UTF-8" /> <title>抱歉,這是一個錯誤頁</title> </head> <body> <div>很抱歉,這是我們的一個錯誤頁</div> <div>影響的因素有很多,我們會儘快解決的。 ﹃_﹃〣</div> <div th:text="${url}"></div> <div th:text="${exception.message}"></div> </body> </html>
v效果
在Controller中"創建"一個異常。
@RequestMapping("/debug") public String Debug(){ int number = 5 / 0; return null; }
運行效果如下:
作 者:請叫我頭頭哥
出 處:http://www.cnblogs.com/toutou/
關於作者:專註於基礎平臺的項目開發。如有問題或建議,請多多賜教!
版權聲明:本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文鏈接。
特此聲明:所有評論和私信都會在第一時間回覆。也歡迎園子的大大們指正錯誤,共同進步。或者直接私信我
聲援博主:如果您覺得文章對您有幫助,可以點擊文章右下角【推薦】一下。您的鼓勵是作者堅持原創和持續寫作的最大動力!