SpringBoot配置GlobalExceptionHandler全局異常處理器案例
1. 創(chuàng)建全局異常處理器類GlobalExceptionHandler
@ControllerAdvice: 定義統(tǒng)一的異常處理類,捕獲 Controller 層拋出的異常。如果添加 @ResponseBody 返回信息則為JSON格式,這樣就不必在每個Controller中逐個定義AOP去攔截處理異常。
@RestControllerAdvice: 相當于 @ControllerAdvice 與 @ResponseBody 的結(jié)合體。
@ExceptionHandler: 統(tǒng)一處理一種類的異常,減少代碼重復(fù)率,降低復(fù)雜度。
@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()); //獲取狀態(tài)碼 mv.setViewName("/pages/exception/error"); //異常的視圖名稱 return mv; } }
【注意】基于@ControllerAdvice注解的全局異常統(tǒng)一處理只能針對于Controller層的異常。也就是只能捕獲到Controller層的異常,在service層或者其他層面的異常都不能捕獲。
2. 創(chuàng)建controller測試出現(xiàn)異常情況
//測試異常處理 @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頁面顯示錯誤信息
<!-- 統(tǒng)一異常處理頁面 --> <!DOCTYPE html> <html xmlns:th="http://www.thymeleaf.org" > <head> <title>出現(xiàn)錯誤啦</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/> 聯(lián)系地址:<a rel="external nofollow" >String_day</a><br/> 聯(lián)系電話:<span>18828886888</span> </p> </div> </body> </html>
訪問錯誤查看跳轉(zhuǎn)頁面
http://localhost:8000/OnlineMall/page/exception
到此這篇關(guān)于SpringBoot配置GlobalExceptionHandler全局異常處理器案例的文章就介紹到這了,更多相關(guān)SpringBoot配置GlobalExceptionHandler內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
在SpringBoot中集成H2數(shù)據(jù)庫的完整指南
Spring Boot是一個簡化企業(yè)級Java應(yīng)用程序開發(fā)的強大框架,H2數(shù)據(jù)庫是一個輕量級的、開源的SQL數(shù)據(jù)庫,非常適合用于開發(fā)和測試,本文將指導您如何在Spring Boot應(yīng)用程序中集成H2數(shù)據(jù)庫,并探索一些高級配置選項,需要的朋友可以參考下2024-10-10Java中final關(guān)鍵字和final的4種用法
這篇文章主要給大家分享的是?Java中final關(guān)鍵字和final的4種用法修飾類、修飾方法、修飾變量、修飾參數(shù),下面文章具有一定的參考價值,需要的小伙伴可以參考一下2021-11-11SpringBoot讀取多環(huán)境配置文件的幾種方式
這篇文章主要給大家介紹了SpringBoot讀取多環(huán)境配置文件的幾種方式,文章通過代碼示例介紹的非常詳細,具有一定的參考價值,需要的朋友可以參考下2023-10-10如何基于Idea遠程調(diào)試tomcat war包及jar包
這篇文章主要介紹了如何基于Idea遠程調(diào)試tomcat war包及jar包,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-08-08Java中復(fù)雜的Synchronized關(guān)鍵字使用方法詳解
Synchronized關(guān)鍵字是一個種鎖,其有很多名字,例如重量級鎖、悲觀鎖、可重入鎖、、非公平、對象鎖等等,這篇文章主要給大家介紹了關(guān)于Java中復(fù)雜的Synchronized關(guān)鍵字使用方法的相關(guān)資料,需要的朋友可以參考下2024-01-01