精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

SpringBoot 處理異常的幾種常見姿勢

新聞 前端
這是目前很常用的一種方式,非常推薦。測試代碼中用到了 Junit 5,如果你新建項目驗證下面的代碼的話,記得添加上相關依賴。

一、使用 @ControllerAdvice 和 @ExceptionHandler 處理全局異常

這是目前很常用的一種方式,非常推薦。測試代碼中用到了 Junit 5,如果你新建項目驗證下面的代碼的話,記得添加上相關依賴。

1. 新建異常信息實體類

非必要的類,主要用于包裝異常信息。

src/main/java/com/twuc/webApp/exception/ErrorResponse.java

  1. /** 
  2.  * @author shuang.kou 
  3.  */ 
  4. public class ErrorResponse { 
  5.  private String message; 
  6.  private String errorTypeName; 
  7.  public ErrorResponse(Exception e) { 
  8.  this(e.getClass().getName(), e.getMessage()); 
  9.  } 
  10.  public ErrorResponse(String errorTypeName, String message) { 
  11.  this.errorTypeName = errorTypeName; 
  12.  this.message = message; 
  13.  } 
  14.  ......省略getter/setter方法 

2. 自定義異常類型

src/main/java/com/twuc/webApp/exception/ResourceNotFoundException.java

一般我們處理的都是 RuntimeException ,所以如果你需要自定義異常類型的話直接集成這個類就可以了。

  1. /** 
  2.  * @author shuang.kou 
  3.  * 自定義異常類型 
  4.  */ 
  5. public class ResourceNotFoundException extends RuntimeException { 
  6.  private String message; 
  7.  public ResourceNotFoundException() { 
  8.  super(); 
  9.  } 
  10.  public ResourceNotFoundException(String message) { 
  11.  super(message); 
  12.  this.message = message; 
  13.  } 
  14.  @Override 
  15.  public String getMessage() { 
  16.  return message; 
  17.  } 
  18.  public void setMessage(String message) { 
  19.  this.message = message; 
  20.  } 

3. 新建異常處理類

我們只需要在類上加上@ControllerAdvice注解這個類就成為了全局異常處理類,當然你也可以通過 assignableTypes指定特定的 Controller 類,讓異常處理類只處理特定類拋出的異常。

src/main/java/com/twuc/webApp/exception/GlobalExceptionHandler.java

  1. /** 
  2.  * @author shuang.kou 
  3.  */ 
  4. @ControllerAdvice(assignableTypes = {ExceptionController.class}) 
  5. @ResponseBody 
  6. public class GlobalExceptionHandler { 
  7.  ErrorResponse illegalArgumentResponse = new ErrorResponse(new IllegalArgumentException("參數錯誤!")); 
  8.  ErrorResponse resourseNotFoundResponse = new ErrorResponse(new ResourceNotFoundException("Sorry, the resourse not found!")); 
  9.  @ExceptionHandler(value = Exception.class)// 攔截所有異常, 這里只是為了演示,一般情況下一個方法特定處理一種異常 
  10.  public ResponseEntity<ErrorResponse> exceptionHandler(Exception e) { 
  11.  if (e instanceof IllegalArgumentException) { 
  12.  return ResponseEntity.status(400).body(illegalArgumentResponse); 
  13.  } else if (e instanceof ResourceNotFoundException) { 
  14.  return ResponseEntity.status(404).body(resourseNotFoundResponse); 
  15.  } 
  16.  return null
  17.  } 

4. controller模擬拋出異常

src/main/java/com/twuc/webApp/web/ExceptionController.java

  1. /** 
  2.  * @author shuang.kou 
  3.  */ 
  4. @RestController 
  5. @RequestMapping("/api"
  6. public class ExceptionController { 
  7.  @GetMapping("/illegalArgumentException"
  8.  public void throwException() { 
  9.  throw new IllegalArgumentException(); 
  10.  } 
  11.  @GetMapping("/resourceNotFoundException"
  12.  public void throwException2() { 
  13.  throw new ResourceNotFoundException(); 
  14.  } 

使用 Get 請求 localhost:8080/api/resourceNotFoundException[1] (curl -i -s -X GET url),服務端返回的 JSON 數據如下:

  1.  "message""Sorry, the resourse not found!"
  2.  "errorTypeName""com.twuc.webApp.exception.ResourceNotFoundException" 

5. 編寫測試類

MockMvc 由org.springframework.boot.test包提供,實現了對Http請求的模擬,一般用于我們測試 controller 層。

  1. /** 
  2.  * @author shuang.kou 
  3.  */ 
  4. @AutoConfigureMockMvc 
  5. @SpringBootTest 
  6. public class ExceptionTest { 
  7.  @Autowired 
  8.  MockMvc mockMvc; 
  9.  @Test 
  10.  void should_return_400_if_param_not_valid() throws Exception { 
  11.  mockMvc.perform(get("/api/illegalArgumentException")) 
  12.  .andExpect(status().is(400)) 
  13.  .andExpect(jsonPath("$.message").value("參數錯誤!")); 
  14.  } 
  15.  @Test 
  16.  void should_return_404_if_resourse_not_found() throws Exception { 
  17.  mockMvc.perform(get("/api/resourceNotFoundException")) 
  18.  .andExpect(status().is(404)) 
  19.  .andExpect(jsonPath("$.message").value("Sorry, the resourse not found!")); 
  20.  } 

二、 @ExceptionHandler 處理 Controller 級別的異常

我們剛剛也說了使用@ControllerAdvice注解 可以通過 assignableTypes指定特定的類,讓異常處理類只處理特定類拋出的異常。所以這種處理異常的方式,實際上現在使用的比較少了。

我們把下面這段代碼移到 src/main/java/com/twuc/webApp/exception/GlobalExceptionHandler.java 中就可以了。

  1. @ExceptionHandler(value = Exception.class)// 攔截所有異常 
  2. public ResponseEntity<ErrorResponse> exceptionHandler(Exception e) { 
  3. if (e instanceof IllegalArgumentException) { 
  4. return ResponseEntity.status(400).body(illegalArgumentResponse); 
  5. else if (e instanceof ResourceNotFoundException) { 
  6. return ResponseEntity.status(404).body(resourseNotFoundResponse); 
  7. return null

三、 ResponseStatusException

研究 ResponseStatusException 我們先來看看,通過 ResponseStatus注解簡單處理異常的方法(將異常映射為狀態碼)。

src/main/java/com/twuc/webApp/exception/ResourceNotFoundException.java

  1. @ResponseStatus(code = HttpStatus.NOT_FOUND) 
  2. public class ResourseNotFoundException2 extends RuntimeException { 
  3.  public ResourseNotFoundException2() { 
  4.  } 
  5.  public ResourseNotFoundException2(String message) { 
  6.  super(message); 
  7.  } 

src/main/java/com/twuc/webApp/web/ResponseStatusExceptionController.java

  1. @RestController 
  2. @RequestMapping("/api"
  3. public class ResponseStatusExceptionController { 
  4.  @GetMapping("/resourceNotFoundException2"
  5.  public void throwException3() { 
  6.  throw new ResourseNotFoundException2("Sorry, the resourse not found!"); 
  7.  } 

使用 Get 請求 localhost:8080/api/resourceNotFoundException2[2] ,服務端返回的 JSON 數據如下:

  1.  "timestamp""2019-08-21T07:11:43.744+0000"
  2.  "status"404
  3.  "error""Not Found"
  4.  "message""Sorry, the resourse not found!"
  5.  "path""/api/resourceNotFoundException2" 

這種通過 ResponseStatus注解簡單處理異常的方法是的好處是比較簡單,但是一般我們不會這樣做,通過ResponseStatusException會更加方便,可以避免我們額外的異常類。

  1. @GetMapping("/resourceNotFoundException2"
  2. public void throwException3() { 
  3. throw new ResponseStatusException(HttpStatus.NOT_FOUND, "Sorry, the resourse not found!"new ResourceNotFoundException()); 

使用 Get 請求 localhost:8080/api/resourceNotFoundException2[3] ,服務端返回的 JSON 數據如下,和使用 ResponseStatus 實現的效果一樣:

  1.  "timestamp""2019-08-21T07:28:12.017+0000"
  2.  "status"404
  3.  "error""Not Found"
  4.  "message""Sorry, the resourse not found!"
  5.  "path""/api/resourceNotFoundException3" 

ResponseStatusException 提供了三個構造方法:

  1. public ResponseStatusException(HttpStatus status) { 
  2.  this(status, nullnull); 
  3.  } 
  4.  public ResponseStatusException(HttpStatus status, @Nullable String reason) { 
  5.  this(status, reason, null); 
  6.  } 
  7.  public ResponseStatusException(HttpStatus status, @Nullable String reason, @Nullable Throwable cause) { 
  8.  super(null, cause); 
  9.  Assert.notNull(status, "HttpStatus is required"); 
  10.  this.status = status; 
  11.  this.reason = reason; 
  12.  } 

構造函數中的參數解釋如下:

•status :http status

•reason :response 的消息內容

•cause :拋出的異常

 

責任編輯:張燕妮 來源: 今日頭條
相關推薦

2024-08-02 09:15:22

Spring捕捉格式

2024-10-18 08:53:49

SpringMybatis微服務

2024-08-28 08:45:22

2009-11-05 12:45:25

WCF異常

2020-04-13 15:25:01

MySQL數據庫模糊搜索

2022-03-04 08:31:07

Spring異常處理

2019-01-24 16:11:19

前端全局異常數據校驗

2021-01-13 08:14:36

Windows提權漏洞攻擊

2017-12-11 14:12:40

PythonMySQL連接

2021-03-10 10:05:59

網絡釣魚攻擊黑客

2017-08-10 10:28:43

SpringBootSpring

2017-05-05 11:31:34

2023-01-30 07:41:43

2019-09-03 15:26:52

Linuxawk文字數據

2009-12-03 10:49:32

PHP自定義異常處理器

2010-08-17 15:31:54

DB2 存儲過程

2025-09-12 09:31:29

2019-11-15 14:14:13

Python開發BaseExcepti

2011-09-15 09:34:48

ubuntu輸入法

2024-10-07 08:26:05

編程Python異常處理
點贊
收藏

51CTO技術棧公眾號

欧美性生活一区| www久久精品| www国产精品视频| 亚洲性图第一页| 激情aⅴ欧美一区二区欲海潮| 99视频一区二区| 国产精品久久久久久久9999 | 波多野结衣电车| 你懂的国产精品| 亚洲男子天堂网| 992tv人人草| 久久91导航| 亚洲一区免费在线观看| 日韩三级电影| 深爱五月激情五月| 久久69国产一区二区蜜臀| 午夜剧场成人观在线视频免费观看| 国产成人精品无码免费看夜聊软件| 日韩精品第二页| 精品人伦一区二区三区蜜桃网站 | 欧美日韩一卡| 在线观看国产精品91| 9.1在线观看免费| 色噜噜成人av在线| 色av一区二区| 少妇av一区二区三区无码| 精品美女在线观看视频在线观看| 久久先锋影音av| 粉嫩精品一区二区三区在线观看 | 久热精品在线观看| 手机在线电影一区| 亚洲美女视频网站| 国产人成视频在线观看| 欧美黄色一级| 欧美精品乱码久久久久久 | 69堂精品视频在线播放| 欧美日韩另类在线| 国产 日韩 欧美在线| 超碰在线caoporn| 欧美经典一区二区三区| 久久人人九九| 亚洲av片一区二区三区| 成人av免费在线播放| 国产富婆一区二区三区| www.色视频| 国产一区二区不卡在线| 成人久久久久久| 国产精品久久久久久在线| 麻豆国产欧美一区二区三区| 国产精品人成电影| 中文字幕+乱码+中文| 秋霞电影网一区二区| 国产精品久久久久福利| 丁香社区五月天| 日日摸夜夜添夜夜添亚洲女人| 日本精品久久中文字幕佐佐木| 国产精品久久久免费视频| 亚洲九九精品| 欧美在线视频一区| 欧美国产成人精品一区二区三区| 亚洲精品影视| 日韩免费在线视频| 精品无码一区二区三区的天堂| 日韩福利电影在线观看| 国产精品看片资源| 国产又粗又长又大视频| 国模少妇一区二区三区| 444亚洲人体| 欧美特黄一级视频| 久久中文娱乐网| 麻豆成人在线播放| lutube成人福利在线观看| 国产精品美女一区二区三区| 超薄肉色丝袜足j调教99| 国产91足控脚交在线观看| 精品电影在线观看| 国产a级片免费观看| 国产亚洲精彩久久| 欧美一级久久久久久久大片| 亚洲天堂资源在线| 精品国产一区二区三区香蕉沈先生 | 亚洲欧洲日本在线| 日韩伦理在线免费观看| 成年美女黄网站色大片不卡| 欧美日韩一区精品| ass极品水嫩小美女ass| 日韩深夜福利| 久久精品中文字幕电影| 日本在线小视频| 日韩精品一区第一页| 91精品视频在线播放| 欧洲成人一区二区三区| 国产亚洲精品bt天堂精选| eeuss中文| 僵尸再翻生在线观看免费国语| 91福利在线看| 日本一区二区免费视频| 经典一区二区| 欧美激情日韩图片| 伊人亚洲综合网| av不卡免费在线观看| 一区二区成人国产精品| 91超碰在线| 欧美精品色一区二区三区| 一级做a爰片毛片| 中文不卡在线| 国产精品无av码在线观看| 亚洲乱码精品久久久久..| 久久久综合视频| www.激情网| 国产一区精品福利| 亚洲精品美女免费| 欧美三根一起进三p| 日韩精品一二三| 国产亚洲一区在线播放| 成年人网站在线| 欧美性色欧美a在线播放| 欧美xxxxx精品| 亚洲欧美综合久久久| 国产精品99免视看9| 天堂中文在线看| 亚洲精品日韩专区silk| 亚洲欧美自拍另类日韩| 西瓜成人精品人成网站| 久久久久久亚洲精品| 国产免费av电影| 国产无人区一区二区三区| 欧美无砖专区免费| 日韩中文字幕无砖| 久久精品国产一区二区电影| 国产成人自拍偷拍| 久久久www成人免费毛片麻豆| 久久久久免费看黄a片app| 韩国一区二区三区视频| 久久精视频免费在线久久完整在线看| 欧美日韩 一区二区三区| 91在线小视频| 日本中文字幕网址| 久久99国产精品久久99大师| 久久久久久国产精品久久| av中文字幕免费| 亚洲人成精品久久久久久| 一级黄色录像在线观看| 成人在线国产| 国产精品视频网址| 91吃瓜网在线观看| 欧美日韩在线播| 成人午夜免费影院| 国产在线视频一区二区| 法国空姐在线观看免费| 国产成年精品| 欧美成人亚洲成人日韩成人| www男人的天堂| 亚洲无人区一区| 538国产视频| 久久激情中文| 色狠狠久久av五月综合| 国产一区二区色噜噜| 久久久精品国产| 亚洲AV无码精品国产| 亚洲第一综合色| 黄色a一级视频| 青青草91视频| 二级片在线观看| jizz18欧美18| 欧美一级大片在线观看| 97电影在线看视频| 8v天堂国产在线一区二区| 久久久久久久久久综合| a级精品国产片在线观看| 日韩免费毛片视频| 久久密一区二区三区| 99r国产精品视频| 黄色aa久久| 在线看福利67194| 国产a级免费视频| 午夜电影网一区| 岛国片在线免费观看| 国产乱人伦精品一区二区在线观看 | 欧美国产免费| 国内一区在线| jizz久久久久久| 欧美精品aaa| www.亚洲视频| 亚洲成人免费在线视频| 男人天堂视频网| 亚洲精品一卡二卡| 18禁裸乳无遮挡啪啪无码免费| 欧美a一区二区| 韩国无码av片在线观看网站| 奇米狠狠一区二区三区| 亚洲free性xxxx护士hd| 亚洲妇女成熟| 久久久久北条麻妃免费看| 日本毛片在线观看| 欧美军同video69gay| 91香蕉在线视频| 亚洲日本中文字幕区| 亚洲国产第一区| 精品中文字幕一区二区小辣椒| 成 年 人 黄 色 大 片大 全| av永久不卡| 精品一区二区国产| 欧美大片91| 国产精品网站大全| 亚洲精品福利电影| 欧美激情精品久久久久久黑人| 国产高清免费av在线| 亚洲第一页在线| 国产麻豆一精品一男同| 91国偷自产一区二区三区观看 | 在线观看免费版| 亚洲精品福利在线观看| 国产激情无套内精对白视频| 欧美中文字幕一二三区视频| 久久久久久久久久免费视频| 亚洲人午夜精品天堂一二香蕉| 亚洲一区二区观看| 波多野结衣精品在线| 野花视频免费在线观看| 精品一区二区三区欧美| 色婷婷综合久久久久中文字幕| 韩国欧美一区| 精品国产三级a∨在线| 成人久久一区| 日本在线成人一区二区| 网友自拍区视频精品| 激情五月综合色婷婷一区二区| 特黄毛片在线观看| 午夜精品久久久久久久99热| 在线观看电影av| 久久香蕉频线观| 免费观看久久久久| 深夜精品寂寞黄网站在线观看| 国内在线精品| 亚洲午夜小视频| 黄色软件在线观看| 亚洲一级黄色片| 国产精品二线| 中文字幕亚洲在线| 永久免费av片在线观看全网站| 少妇高潮 亚洲精品| av二区在线| 中文字幕一区电影| 老司机免费在线视频| 日韩中文字幕亚洲| av毛片在线看| 欧美激情精品久久久久久大尺度 | 无码精品视频一区二区三区 | 欧美午夜激情影院| 日本一区二区在线不卡| 中文字幕伦理片| 国产精品久久看| 午夜成人亚洲理伦片在线观看| 中文av字幕一区| 亚洲熟女少妇一区二区| 综合av第一页| 久久免费在线观看视频| 香蕉久久一区二区不卡无毒影院| 日本学生初尝黑人巨免费视频| 婷婷中文字幕综合| 日韩人妻精品中文字幕| 欧美性大战久久久久久久| 91亚洲欧美激情| 日韩一区二区三区在线视频| 国产 欧美 精品| 亚洲精品在线观看www| sese一区| 欧美多人乱p欧美4p久久| av小说在线播放| 国产福利成人在线| 亚洲一区有码| 黑人中文字幕一区二区三区| 精品免费视频| 日本丰满少妇黄大片在线观看| 激情一区二区| 国产免费视频传媒| 国产精品99久久久久久有的能看| 娇妻高潮浓精白浆xxⅹ| 国产亚洲精品资源在线26u| 亚洲色图27p| 亚洲一二三级电影| 波多野结衣一区二区三区四区| 91精品国产综合久久精品性色| 六月丁香综合网| 国产亚洲一区精品| 久草在线视频福利| 国产成人一区二区| 亚洲**毛片| 日本精品视频一区| 亚洲私拍自拍| 国产又大又黄又粗又爽| 成人综合婷婷国产精品久久免费| 成人黄色免费网址| 亚洲一区二区三区爽爽爽爽爽| 无码人妻精品一区二区50| 日韩午夜av一区| 国产高清视频免费最新在线| 欧美精品www| 91精品国产色综合久久不卡粉嫩| 久久久7777| 自由日本语亚洲人高潮| 992kp快乐看片永久免费网址| 国产91丝袜在线播放| 欧美一区二区三区粗大| 天天影视网天天综合色在线播放| 亚洲天堂一二三| 亚洲精品中文字幕有码专区| 日韩免费影院| 国产一区二区在线免费| 香蕉视频一区| 国产高清www| 国内精品免费**视频| 国产精品天天干| 日韩欧美在线观看| 国产自产一区二区| 久久中文精品视频| 91精品店在线| 欧美不卡福利| 亚洲制服少妇| 一级特黄a大片免费| 一区二区三区**美女毛片| 国产又粗又猛又黄又爽| 中文字幕日韩在线观看| 日本免费一区二区三区四区| 精品在线观看一区二区| 黄色成人精品网站| 丰满人妻一区二区三区大胸| 亚洲三级在线观看| 97免费观看视频| 色播久久人人爽人人爽人人片视av| 最新日韩精品| 久久国产精品久久| 99国产精品| 国产精品久久不卡| 亚瑟在线精品视频| 人妻无码中文字幕| 国内免费精品永久在线视频| 伊人精品综合| 无码人妻精品一区二区蜜桃网站| 国产乱码精品一品二品| 最新一区二区三区| 欧美一级艳片视频免费观看| 91蜜桃在线视频| 99视频免费观看| 欧美日韩亚洲三区| 久久久老熟女一区二区三区91| 亚洲香蕉伊在人在线观| 狠狠躁日日躁夜夜躁av| 久久青草精品视频免费观看| 成人春色在线观看免费网站| 国产女主播自拍| 99精品欧美一区二区三区综合在线| 在线观看国产亚洲| 亚洲免费影视第一页| av免费在线一区| 影音先锋亚洲视频| 国产剧情在线观看一区二区| 免费中文字幕视频| 精品处破学生在线二十三| 激情国产在线| 色综合久久久久久久久五月| 久久精品国产成人一区二区三区| 少妇视频一区二区| 日韩免费视频一区二区| 成av人片在线观看www| 久久综合色一本| 老色鬼精品视频在线观看播放| 极品久久久久久| 亚洲成人激情视频| 成人黄色视屏网站| 国产欧美123| 99re亚洲国产精品| 一区二区三区精| 久久久久久欧美| 国产成人精品免费视| 亚洲日本黄色片| 午夜视频在线观看一区| 国产在线一二三区| 亚洲字幕在线观看| 香蕉精品999视频一区二区 | 四虎影院在线播放| 国产欧美一区二区三区久久人妖| 国产综合久久| 欧美 日韩 成人| 精品国产伦一区二区三区观看体验 | 欧美亚洲精品一区| 午夜小视频福利在线观看| 免费久久一级欧美特大黄| 麻豆国产91在线播放| 日本少妇bbwbbw精品| 俺去亚洲欧洲欧美日韩| 欧美1区2区3区4区| 999久久久精品视频| 婷婷成人激情在线网| 丝袜美腿美女被狂躁在线观看| 国产视频在线观看一区| 国产在线一区二区| 黄色在线视频网址| 欧美激情欧美激情在线五月|