激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Spring Boot學習入門之統一異常處理詳解

Spring Boot學習入門之統一異常處理詳解

2020-12-25 14:33a60782885 Java教程

我們在做Web應用的時候,請求處理過程中發生錯誤是非常常見的情況。下面這篇文章主要給大家介紹了關于Spring Boot學習入門之統一異常處理的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下。

前言

關于之前的一篇所講到的表單驗證中提到,如果產生錯誤,可以得到錯誤的信息,但是返回值的問題卻沒有考慮。

其中所提到的Controller:

?
1
2
3
4
5
6
7
8
9
10
11
12
@RequestMapping(value = "/doRegister", method = RequestMethod.POST)
public @ResponseBody User doRegister(@Valid User user, BindingResult result, Model model) {
 if (result.hasErrors()) {
 List<ObjectError> list = result.getAllErrors();
 for (ObjectError error : list) {
  System.out.println(error.getDefaultMessage());
 }
 return null;
 }
 System.out.println("注冊..");
 return user;
}

如果驗證不通過,我們不應該返回null的,這會對前端來說并不友好。

所以我們應該定義一個統一的返回格式:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
public class ReturnType {
 
 private int code;
 private User data;
 private String msg;
 
 public ReturnType(int code, String msg, User data) {
 this.code = code;
 this.msg = msg;
 this.data = data;
 }
 
 public int getCode() {
 return code;
 }
 public void setCode(int code) {
 this.code = code;
 }
 public User getData() {
 return data;
 }
 public void setData(User data) {
 this.data = data;
 }
 public String getMsg() {
 return msg;
 }
 public void setMsg(String msg) {
 this.msg = msg;
 }
 
}

這樣一來,返回的結果中的json的格式是固定的。

雖然我們的希望是好的,但是并不是總是可以這樣的,因為不管是對底層的數據庫操作過程,還是業務層的處理過程,還是控制層的處理過程,都不可避免會遇到各種可預知的、不可預知的異常需要處理。

如果存在下面這種情況:

?
1
2
3
4
@RequestMapping(value = "/doRegister", method = RequestMethod.POST)
public @ResponseBody ReturnType doRegister(@Valid User user, BindingResult result, Model model) throws Exception {
 throw new Exception("new Exception");
}

這就好像在調用Service層代碼的時候,執行方法的過程中遇到了一個異常,那么回得到什么樣的結果呢?
無論如何,返回的肯定不是我們之前定義好的格式的返回值。

那我們應該怎么做呢?

這里就需要進行統一的異常處理了。

?
1
2
3
4
5
6
7
8
9
10
11
12
@ControllerAdvice
public class ExceptionHandle {
 
 /* 表明這個handler只處理什么類型的異常
 * */
 @ExceptionHandler(value = Exception.class)
 // 返回值為json或者其他對象
 @ResponseBody
 public ReturnType handle(Exception e) {
 return new ReturnType(-1, e.getMessage(), null);
 }
}

創建這么一個handler類,當Controller拋出異常的時候,就會委托給這個類其中的方法進行執行。

這樣一來,就不會出現即使拋出異常,也不會得到不是我們期望的返回值的結果了。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對服務器之家的支持。

原文鏈接:http://blog.csdn.net/a60782885/article/details/68491592

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 日韩在线观看高清 | 亚洲午夜久久久精品一区二区三区 | 免费黄色片网站 | 亚洲天堂在线电影 | 国产精选久久 | 91在线播放国产 | 亚洲国产精久久久久久久 | 91看片入口| 国产女厕一区二区三区在线视 | 国产无遮挡裸体免费视频 | 成人免费av在线播放 | 一区二区三区四区视频在线观看 | 中文字幕亚洲一区二区三区 | 宅男噜噜噜66国产在线观看 | 得得啪在线 | 国内久久久久 | 热99精品视频 | 成年人在线视频观看 | 91九色网 | 91在线视频精品 | 成人啪啪色婷婷久 | 逼特逼视频在线观看 | 国产精品免费小视频 | 一级成人欧美一区在线观看 | 国产一区精品在线观看 | 久久美女免费视频 | 7777网站 | 成人一级免费 | 精品无吗乱吗av国产爱色 | 亚洲第五色综合网 | www成人在线观看 | 香蕉国产9| 在线播放免费av | 一级做a爱片性色毛片高清 日本一区二区在线看 | 欧美特黄一级高清免费的香蕉 | 亚洲一区二区三区精品在线观看 | 国产一区二区三区撒尿在线 | 视频一区二区中文字幕 | 国产精品99久久久久久宅女 | 国产精品成年片在线观看, 日韩毛片网 | 欧美一区二区三区四区夜夜大片 |