最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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"); 
} 

這就好像在調(diào)用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)即使拋出異常,也不會得到不是我們期望的返回值的結果了。

總結

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

相關文章

  • Java私有構造函數(shù)作用原理解析

    Java私有構造函數(shù)作用原理解析

    這篇文章主要介紹了Java私有構造函數(shù)作用原理解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-12-12
  • Java16 JDK安裝并設置環(huán)境變量的方法步驟

    Java16 JDK安裝并設置環(huán)境變量的方法步驟

    突然想起自己大學剛接觸java的時候,要下載JDK和配置環(huán)境變量,那時候我上網(wǎng)找了很多教學,本文就詳細的介紹一下Java16 JDK安裝并設置環(huán)境變量,感興趣的可以了解一下
    2021-09-09
  • Spring AOP使用@Aspect注解 面向切面實現(xiàn)日志橫切的操作

    Spring AOP使用@Aspect注解 面向切面實現(xiàn)日志橫切的操作

    這篇文章主要介紹了Spring AOP使用@Aspect注解 面向切面實現(xiàn)日志橫切的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • 深入理解Java基礎之try-with-resource語法糖

    深入理解Java基礎之try-with-resource語法糖

    這篇文章主要介紹了深入理解Java基礎之try-with-resource語法糖,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-02-02
  • springboot 使用Spring Boot Actuator監(jiān)控應用小結

    springboot 使用Spring Boot Actuator監(jiān)控應用小結

    本篇文章主要介紹了springboot 使用Spring Boot Actuator監(jiān)控應用小結,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-02-02
  • java模擬post請求登錄貓撲示例分享

    java模擬post請求登錄貓撲示例分享

    這篇文章主要介紹了java模擬post請求登錄貓撲的小示例,需要的朋友可以參考下
    2014-02-02
  • Java編程復用類代碼詳解

    Java編程復用類代碼詳解

    這篇文章主要介紹了Java編程復用類代碼詳解,分享了相關代碼示例,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下
    2018-01-01
  • hibernate-validator如何使用校驗框架

    hibernate-validator如何使用校驗框架

    高效、合理的使用hibernate-validator校驗框架可以提高程序的可讀性,以及減少不必要的代碼邏輯,本文主要介紹了hibernate-validator如何使用校驗框架,感興趣的可以了解一下
    2022-04-04
  • Java上傳文件FTP服務器代碼實例

    Java上傳文件FTP服務器代碼實例

    這篇文章主要介紹了Java上傳文件FTP服務器代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-12-12
  • SpringCache輕松啟用Redis緩存的全過程

    SpringCache輕松啟用Redis緩存的全過程

    Spring Cache是Spring提供的一種緩存抽象機制,旨在通過簡化緩存操作來提高系統(tǒng)性能和響應速度,本文將給大家詳細介紹SpringCache如何輕松啟用Redis緩存,文中有詳細的代碼示例供大家參考,需要的朋友可以參考下
    2024-07-07

最新評論

柳河县| 乡城县| 涡阳县| 利津县| 荔浦县| 利津县| 奇台县| 安顺市| 衢州市| 邯郸市| 资阳市| 呼图壁县| 滕州市| 刚察县| 延川县| 正安县| 平顺县| 灵台县| 南江县| 宣化县| 墨江| 新河县| 寻乌县| 汉寿县| 大荔县| 合川市| 吴忠市| 和静县| 定州市| 乌鲁木齐市| 佛冈县| 环江| 高尔夫| 高台县| 韶山市| 中江县| 文安县| 南城县| 武夷山市| 齐齐哈尔市| 崇明县|