springboot中自定義異常以及定制異常界面實(shí)現(xiàn)過(guò)程解析
不多說(shuō)廢話,直接進(jìn)入主菜??!
步驟:
1.搭建SpringBoot的開(kāi)發(fā)環(huán)境,略(有不會(huì)的可以私信我)。
2.編寫(xiě)一個(gè)自定義異常,自定義異常需要繼承RuntimeException。寫(xiě)一個(gè)構(gòu)造函數(shù),并調(diào)用父類保存異常信息。
public class MyException extends RuntimeException { public MyException(String massage) { super(massage); } }
3.編寫(xiě)一個(gè)控制器,用于拋出異常。當(dāng)請(qǐng)求參數(shù)param=aa時(shí)拋出異常,否則不拋出異常。
@Controller public class MyController { @ResponseBody @RequestMapping("/exception") public String ee(String param){ if(param.equals("aa")){ throw new MyException("拋出自定義異常"); } return "沒(méi)有拋出異常"; } }
當(dāng)控制器拋出自定義異常時(shí),這是服務(wù)器會(huì)發(fā)生狀態(tài)碼為500的錯(cuò)誤。springboot自帶的異常界面不是很友好,我們可以定制一個(gè)異常界面用于顯示異常信息,看下一步驟。
4.定制自定義異常處理界面。springboot自動(dòng)配置了視圖解析器,我們可以編寫(xiě)一個(gè)500.html放在classpath:tempaltes/error目錄下。
500.html代碼如下(用的是thymeleaf渲染):
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> status: [[${status}]] <br> timestamp: [[${timestamp}]] <br> message: [[${message}]] <br> exception: [[${exception}]] <br> </body> </html>
代碼已經(jīng)編寫(xiě)完畢,來(lái)看看效果吧!
當(dāng)我們?cè)L問(wèn) http://localhost/exception?param=aa時(shí)拋出異常,結(jié)果如下:
訪問(wèn) http://localhost/exception?param=bb,不會(huì)拋出異常,結(jié)果如下:
** 舉一反三:在用戶管理系統(tǒng)中,我們可以自定義用戶不存在異常類,當(dāng)查詢某個(gè)不存在的用戶時(shí),讓控制器拋出用戶不存在異常,并跳轉(zhuǎn)到一個(gè)友好的提示界面。
搶票系統(tǒng),當(dāng)用戶購(gòu)買(mǎi)的票已經(jīng)賣(mài)完,我們可以拋出一個(gè)自定義的票已經(jīng)沒(méi)有的異常,并跳轉(zhuǎn)到一個(gè)友好的提示界面。 **
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
java實(shí)現(xiàn)的AES加密算法完整實(shí)例
這篇文章主要介紹了java實(shí)現(xiàn)的AES加密算法,結(jié)合完整實(shí)例形式分析了AES加密類的實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2016-07-07Springboot+mybatis-plus+注解實(shí)現(xiàn)數(shù)據(jù)權(quán)限隔離
本文將結(jié)合實(shí)例代碼,介紹Springboot+mybatis-plus+注解實(shí)現(xiàn)數(shù)據(jù)權(quán)限隔離,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-07-07javaweb頁(yè)面附件、圖片下載及打開(kāi)(實(shí)現(xiàn)方法)
下面小編就為大家?guī)?lái)一篇javaweb頁(yè)面附件、圖片下載及打開(kāi)(實(shí)現(xiàn)方法)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-06-06Java字符編碼簡(jiǎn)介_(kāi)動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要介紹了Java字符編碼簡(jiǎn)介,本文主要包括以下幾個(gè)方面:編碼基本知識(shí),Java,系統(tǒng)軟件,url,工具軟件等,感興趣的朋友一起看看吧2017-08-08使用bat啟動(dòng)springboot項(xiàng)目并解決亂碼問(wèn)題
這篇文章主要介紹了window中使用bat啟動(dòng)springboot項(xiàng)目,并解決亂碼問(wèn)題2021-06-06Java并發(fā)編程之ConcurrentLinkedQueue解讀
這篇文章主要介紹了Java并發(fā)編程之ConcurrentLinkedQueue解讀,非阻塞的實(shí)現(xiàn)方式則可以使用循環(huán)CAS的方式來(lái)實(shí)現(xiàn),而ConcurrentLinkedQueue就是juc包中自帶的經(jīng)典非堵塞方式實(shí)現(xiàn)的工具類,需要的朋友可以參考下2023-12-12Spring @ComponentScan注解使用案例詳細(xì)講解
@ComponentScan注解的作用可以簡(jiǎn)述為:將項(xiàng)目中所有被@Component注解直接或者間接標(biāo)記的類---->組裝成BeanDefinition---->然后以key=beanName, value=BeanDefinition的形式存儲(chǔ),為后續(xù)生成bean對(duì)象做準(zhǔn)備2023-03-03mybatis中的if?test判斷入?yún)⒌闹祮?wèn)題
這篇文章主要介紹了mybatis中的if?test判斷入?yún)⒌闹祮?wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-06-06SpringBoot入門(mén)原理及優(yōu)勢(shì)分析
本篇文章主要來(lái)為大家介紹SpringBoot入門(mén)原理及優(yōu)勢(shì)分析,有需要的朋友可以借鑒參考下,希望可以有所幫助,祝大家多多進(jìn)步,早日升職加薪2021-09-09