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