javascript
SpringBoot 错误页面和异常处理
一,錯誤頁面
如圖所有,這兩種錯誤提示在springboot開發的應有程序中都很常見,第一種是html請求,第二種是json格式的請求。
在SpringBoot中,默認錯誤請求控制器是BasicErrorController。
@RequestMapping注解的意思是,如果配置文件沒有配置server.error.path,則默認使用error
這里主要看我圈出來的這兩個方法,第一個方法是處理html請求的錯誤,第二種是處理json格式請求的錯誤。
了解完基礎知識之后,就可以開始準備我們專屬的錯誤頁面的。
從SpringBoot官方文檔里邊可以知道,默認的錯誤頁面是在templates下的一個erroe.html文件,如果我們替換掉默認的,只需要再這個目錄下新建一個error.html即可。
測試代碼:
可以看到,我們新創的error.html已經替換掉springboot默認的錯誤頁面了。除了這種全部錯誤都用一個頁面來展示的方法,我們也可以用錯誤碼來區分錯誤,讓不同的錯誤跳轉到不同的HTML。
測試代碼:
其他的錯誤碼頁面也是類似,要注意,文件的目錄是放在templates/error/xxx.html ,同時,我們也可以看出來,錯誤頁面的響應也是有優先級的,具體的請看總結。
?
接下來,是動態的錯誤頁面。一般頁面上都需要把錯誤信息給打印出來。
注意,這里配置文件要改動一下,不然頁面上是獲取不到錯誤信息的。
?
小總結:基本上,springboot錯誤頁面的配置已經講解完了,各種錯誤頁面的優先級是 : 動態 > 靜態 > error.html
?
?
二,統一異常處理
這里主要涉及到2個注解:@ExceptionHandler和@ControllerAdvice
@ExceptionHandler注解,此注解注解到類的方法上,當此注解里定義的異常拋出時,此方法會被執行。
如果@ExceptionHandler所在的類是@Controller,則此方法只作用在此類。
如果@ExceptionHandler所在的類帶有@ControllerAdvice注解,則此方法會作用在全局。
?
也就是說,局部的異常處理 =? @Controller/@RestController +?@ExceptionHandler,全局的異常處理 =?@ControllerAdvice +?@ExceptionHandler
局部異常處理? 測試代碼:
可以看到,兩個不同的controller,同樣的異常,不同的錯誤輸出。
?
全局異常處理-代碼測試:
?
可以看到,兩個controller都可以對同一個異常做出同樣的處理。
?
?
三,總結
介紹了springboot默認處理錯誤頁面的幾種方法和介紹了怎么做一個異常統一處理。在項目里,配置了異常統一處理之后,不管哪里拋出的異常,我們只需在統一處理的方法上修改我們的邏輯即可,減輕我們開發和維護的難度,畢竟方法多了之后異常零散分散在不同的方法里,不好管理。
?
?
?
?
?
?
?
總結
以上是生活随笔為你收集整理的SpringBoot 错误页面和异常处理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 官宣!麻省理工学院官方线上课程项目开放报
- 下一篇: [算法系列] 深入递归本质+经典例题解析