欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Spring Boot學習入門之統(tǒng)一異常處理詳解

 更新時間:2017年09月04日 09:24:11   作者:a60782885  
我們在做Web應用的時候,請求處理過程中發(fā)生錯誤是非常常見的情況。下面這篇文章主要給大家介紹了關于Spring Boot學習入門之統(tǒng)一異常處理的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下。

前言

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

其中所提到的Controller:

@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的,這會對前端來說并不友好。

所以我們應該定義一個統(tǒng)一的返回格式:

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的格式是固定的。

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

如果存在下面這種情況:

@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層代碼的時候,執(zhí)行方法的過程中遇到了一個異常,那么回得到什么樣的結果呢?
無論如何,返回的肯定不是我們之前定義好的格式的返回值。

那我們應該怎么做呢?

這里就需要進行統(tǒng)一的異常處理了。

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

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

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

總結

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

相關文章

  • Java并發(fā)編程:volatile關鍵字詳細解析

    Java并發(fā)編程:volatile關鍵字詳細解析

    這篇文章主要介紹了Java并發(fā)編程:volatile關鍵字詳細解析,對學習volatile關鍵字有一定的認識,有需要的可以了解一下。
    2016-11-11
  • Java集合類之Map集合的特點及使用詳解

    Java集合類之Map集合的特點及使用詳解

    這篇文章主要為大家詳細介紹一下Java集合類中Map的特點及使用,文中的示例代碼講解詳細,對我們學習Java有一定幫助,感興趣的可以了解一下
    2022-08-08
  • Java中BigDecimal與0比較的一個坑實戰(zhàn)記錄

    Java中BigDecimal與0比較的一個坑實戰(zhàn)記錄

    BigDecimal屬于大數(shù)據(jù),精度極高,不屬于基本數(shù)據(jù)類型,屬于java對象,下面這篇文章主要給大家介紹了關于Java中BigDecimal與0比較的一個坑的相關資料,需要的朋友可以參考下
    2022-12-12
  • intellij idea修改maven配置時總是恢復默認配置的解決方法idea版本(2020.2.x)

    intellij idea修改maven配置時總是恢復默認配置的解決方法idea版本(2020.2.x)

    這篇文章主要介紹了intellij idea修改maven配置時總是恢復默認配置的解決方法idea版本(2020.2.x),本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-08-08
  • MyBatis逆向工程生成dao層增刪改查的操作

    MyBatis逆向工程生成dao層增刪改查的操作

    這篇文章主要介紹了MyBatis逆向工程生成dao層增刪改查的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • Java foreach循環(huán)的使用方法詳解

    Java foreach循環(huán)的使用方法詳解

    Java SE5引入了一種更加簡潔的for語法用于數(shù)組和容器,即foreach語法,表示不必創(chuàng)建int變量去對由訪問項構成的序列進行計數(shù),foreach將自動產(chǎn)生每一項,這種循環(huán)方式在我們后來遍歷集合時很常用,所以也有必要來學習一下,需要的朋友可以參考下
    2023-05-05
  • SpringBoot Knife4j在線API文檔框架基本使用

    SpringBoot Knife4j在線API文檔框架基本使用

    knife4j是為Java MVC框架集成Swagger生成Api文檔的增強解決方案,這篇文章主要介紹了SpringBoot中使用Knife4J在線API文檔框架,需要的朋友可以參考下
    2022-12-12
  • 利用Java截取String字符串的幾種常用方法

    利用Java截取String字符串的幾種常用方法

    在開發(fā)應用中經(jīng)常會使用到java string,這篇文章主要給大家介紹了關于利用Java截取String字符串的幾種常用方法,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-05-05
  • plantuml畫圖實現(xiàn)代碼畫時序圖UML用例圖

    plantuml畫圖實現(xiàn)代碼畫時序圖UML用例圖

    這篇文章主要為大家介紹了plantuml畫圖實現(xiàn)代碼畫時序圖示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-07-07
  • Java單例模式的五種實現(xiàn)方式

    Java單例模式的五種實現(xiàn)方式

    單例模式(Singleton Pattern)是Java中最簡單的設計模式之一,這種類型的設計模式屬于創(chuàng)建型模式,它提供了一種創(chuàng)建對象的最佳方式,下面這篇文章主要給大家介紹了關于Java單例模式的五種實現(xiàn)方式?,需要的朋友可以參考下
    2022-06-06

最新評論