国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产欧美日韩在线观看 | av成人一区二区 | 在线中文字幕视频 | 日韩成人欧美 | 国产亚洲精品久久久久动 | 欧美成人精品一区二区三区 | 国产精品美女久久久久久久网站 | 国产精品久久久久久久久 | 一区二区色 | 国产黄色一级录像 | 久久国产精品一区二区 | 久草在线免费资源 | 精品无码久久久久久国产 | 久久久精品国产 | 四虎久久| 超碰免费观看 | 成人日韩在线观看 | 久久久网| 99精品一区二区 | 亚洲精美视频 | 久久99精品久久久久蜜臀 | 91精品国产欧美一区二区 | 午夜午夜精品一区二区三区文 | 亚洲aⅴ天堂av在线电影软件 | 国产一级毛片国语一级 | 天堂精品一区二区三区 | 成人爱情偷拍视频在线观看 | 国产伦精品一区二区三区 | 九色91九色porny永久 | 久久婷婷av | 国产高清av在线一区二区三区 | 欧美日韩国产中文 | 女人高潮特级毛片 | 国产99久久精品 | 精品福利av导航 | 欧美日韩综合视频 | 精品成人影院 | 国产日韩中文字幕 | 欧美日视频 | av在线大全 | 污视频在线观看免费 |