精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

免费在线观看亚洲| 国产日韩成人内射视频| 天天躁日日躁狠狠躁喷水| 国产日韩亚洲欧美精品| 这里只有精品丝袜| 下面一进一出好爽视频| 偷拍视频一区二区三区| 亚洲精品水蜜桃| 日本午夜精品电影| 精品毛片一区二区三区| 麻豆九一精品爱看视频在线观看免费| 久久精品国产2020观看福利| 中文字幕在线免费看线人| 91麻豆精品| 欧美亚洲综合久久| 久久久久久久久久网| 老司机精品视频在线观看6| 99麻豆久久久国产精品免费| 成人欧美一区二区三区黑人| 亚洲毛片一区二区三区| 激情国产一区| 麻豆国产精品va在线观看不卡| 艳妇乳肉亭妇荡乳av| 高清一区二区三区av| 欧美探花视频资源| 337p粉嫩大胆噜噜噜鲁| 特级毛片在线| 国产精品美女久久福利网站| 欧美精品一区二区三区久久| 高潮毛片7777777毛片| 麻豆精品蜜桃视频网站| 青青草99啪国产免费| 国产黄色片视频| 欧美黄色aaaa| 久久艳片www.17c.com | 91丨九色丨蝌蚪富婆spa| 亚洲xxx视频| 97在线公开视频| 日本视频一区二区| 日韩av大片在线| 成年人免费高清视频| 日韩视频一区| 97精品视频在线观看| 日韩在线中文字幕视频| 亚洲天堂一区二区三区四区| 丝袜一区二区三区| 亚洲欧洲综合网| 99久久精品网站| 日韩最新中文字幕电影免费看| 久久视频精品在线观看| 国模精品一区| 视频直播国产精品| 欧美一级特黄高清视频| 天天插综合网| 欧美成年人在线观看| 波多野结衣爱爱视频| 欧美aⅴ99久久黑人专区| 欧美成人手机在线| 久久久精品91| 亚洲另类黄色| 欧洲精品在线视频| 无码视频在线观看| 免费xxxx性欧美18vr| 国产日韩欧美黄色| 国产人妖一区二区三区| 国产成人在线视频网站| 风间由美一区二区三区| 外国精品视频在线观看 | 久久国产高清视频| 久久久久久美女精品| 九九热视频这里只有精品| 国产午夜免费视频| 久久精品二区三区| 国产主播喷水一区二区| 亚洲日本在线天堂| 国产成人97精品免费看片| 成人毛片18女人毛片| 国产亚洲一区在线| 国产精品扒开腿做爽爽爽视频 | 51成人做爰www免费看网站| 国产精品日韩无码| 国产精品一二三区| 国产一区二区久久久| 黄色在线播放| 1024成人网色www| 男人添女人荫蒂免费视频| 精品极品在线| 欧美视频一区在线观看| 日本成人在线免费观看| 欧美五码在线| 国产精品沙发午睡系列| 99久久国产热无码精品免费| 国产福利一区二区三区视频在线| 国产精品国产三级欧美二区| 男人的天堂av高清在线| 中文字幕在线一区免费| 日韩亚洲欧美视频| 日本成人福利| 女生影院久久| 中文一区一区三区高中清不卡| 欧美日韩综合久久| 特黄一区二区三区| 午夜日韩福利| 国产成人久久久| 国产成人精品一区二三区四区五区 | 37pao成人国产永久免费视频| 欧美激情福利| 亚洲精品一区av在线播放| 国产精品成人69xxx免费视频| 伊人精品视频| 国产日韩中文字幕| 你懂的视频在线| 又紧又大又爽精品一区二区| 丝袜制服一区二区三区| 免费看成人人体视频| 成年人精品视频| 亚洲国产无线乱码在线观看| 99精品视频在线免费观看| 99久re热视频精品98| 美女网站视频一区| 亚洲精品电影在线观看| 国产这里有精品| 久久成人18免费观看| 欧洲精品久久| 一二三四视频在线中文| 欧美精品一区二区三区高清aⅴ| 国产精品视频一区二区在线观看| 久久青草久久| 国产欧美精品一区二区三区| 中文字幕在线观看网站| 欧美精品乱码久久久久久| 我想看黄色大片| 另类国产ts人妖高潮视频| 国产伦精品一区二区三区免| 欧洲黄色一区| 日韩一级片网站| 国产大学生自拍| 精品无码三级在线观看视频| 在线观看日本一区| 国产精品亚洲成在人线| 国产一区二区三区网站| 九九热最新视频| 三级毛片在线免费看| 国产成a人亚洲精| 国产欧美123| 久久丁香四色| 欧美贵妇videos办公室| 亚洲av无码片一区二区三区 | 视频在线日韩| 亚洲一级免费视频| 亚洲 小说区 图片区| 国产精品五月天| 日韩高清第一页| 91精品啪在线观看国产18| 91九色视频导航| 亚洲小说区图片区都市| 精品少妇一区二区三区免费观看| 免费人成在线观看| 成人av在线资源网| 日本精品一区在线观看| 精品一区二区三| 国产日韩精品入口| 欧美xxxx少妇| 日韩精品一二三四区| 一级做a爰片久久毛片| 国产精品午夜电影| 性生活在线视频| 亚洲日本视频| 日本三级中国三级99人妇网站| 视频免费1区二区三区| 综合久久2023| 色偷偷av亚洲男人的天堂| 国产精品久久久久久久久久久久久久久久久久 | 精品视频—区二区三区免费| 波多野结衣 久久| 国产精品久久久久久久久搜平片| 激情图片中文字幕| 亚洲国产午夜| 日本最新一区二区三区视频观看| 日本久久久久| 91sa在线看| 麻豆传媒在线观看| 亚洲激情视频在线观看| 手机看片久久久| 一区精品在线播放| 欧美丰满少妇人妻精品| 国内精品伊人久久久久av影院| 99在线免费视频观看| 国产在视频线精品视频www666| 亚洲专区国产精品| 精品3atv在线视频| 欧美日韩第一页| 成在在线免费视频| 精品噜噜噜噜久久久久久久久试看 | 制服丝袜中文字幕第一页| 欧美午夜一区| 亚洲福利av在线| 国产成人福利av| 国产欧美日韩精品丝袜高跟鞋| xxx性欧美| 久久精品小视频| 久青草国产在线| 亚洲精品在线免费播放| 国产精品主播一区二区| 欧美视频在线观看免费| 欧美做爰爽爽爽爽爽爽| 国产欧美日韩视频在线观看| 精品国产乱码久久久久夜深人妻| 蜜乳av一区二区三区| 91九色在线观看视频| 欧美日韩国产一区精品一区| 亚洲一区二三| 精品日产免费二区日产免费二区| 国产精品免费一区二区三区在线观看| 国产精品久久久久久妇女| 77777少妇光屁股久久一区| 毛片在线视频| 中文字幕日韩av电影| 欧洲天堂在线观看| 亚洲电影免费观看高清完整版在线观看| 97免费观看视频| 在线视频综合导航| 日产精品久久久| 亚洲国产精品欧美一二99| 黑人操日本美女| 中文字幕一区免费在线观看 | 第一会所sis001亚洲| 久久国产精品久久| 麻豆精品av| 国产三区二区一区久久| 都市激情亚洲| 国产伦精品一区二区三区照片| 57pao国产一区二区| 不卡视频一区二区| 榴莲视频成人app| 91最新在线免费观看| 在线成人免费| 亚洲综合最新在线| 日韩精品成人在线观看| y111111国产精品久久婷婷| 欧美日韩午夜电影网| 96成人在线视频| 午夜日韩影院| 国产私拍一区| 青青草原在线亚洲| 免费影院在线观看一区| 亚洲大片精品免费| 日本午夜精品一区二区| 凹凸成人精品亚洲精品密奴| 一本一道久久a久久综合精品 | 少妇av一区二区| 国产精品久久久久久久久久妞妞| 国产免费裸体视频| 亚洲三级免费| 男女午夜激情视频| 视频一区视频二区中文| 午夜激情av在线| 国产一区二区在线影院| 午夜福利三级理论电影| 99国产精品久久| 成人免费av片| 国产精品―色哟哟| a级片在线观看免费| 无码av免费一区二区三区试看| 国产精品久免费的黄网站| 欧美唯美清纯偷拍| 精品久久久无码中文字幕| 亚洲国产日韩欧美在线99| 免费在线看v| 久久精品亚洲热| av3级在线| 国产精品欧美一区二区| 免费不卡在线观看| 美日韩免费视频| 成人羞羞网站| 肉大捧一出免费观看网站在线播放| 欧美三级网页| 日韩av在线综合| 九一九一国产精品| 午夜免费福利影院| 国产精品免费aⅴ片在线观看| 黄色一级片在线| 91久久国产最好的精华液| 在线精品小视频| 国产美女高潮久久白浆| 中文字幕成人| 国产aⅴ精品一区二区三区黄| 亚洲va久久久噜噜噜久久| 亚洲午夜高清视频| 激情六月综合| 色婷婷狠狠18| av不卡在线观看| 久久久www成人免费精品| 日本欧美www| 欧美成人精精品一区二区频| 日本视频在线观看一区二区三区| 国产亚洲精品美女久久久| 新版中文在线官网| 国产91色在线| 精品国产一区二区三区不卡蜜臂| 亚洲欧美丝袜| 夜夜精品视频| 精产国品一区二区三区| 国产日韩欧美一区二区三区乱码| 九九视频在线观看| 欧美日韩激情一区二区三区| 亚洲欧洲国产综合| 欧美成人高清视频| 国产精品久久久久77777丨| 久久久精品动漫| 激情婷婷亚洲| 亚洲精品一区二区三区av| 日韩视频中文| 无码人妻一区二区三区免费n鬼沢 久久久无码人妻精品无码 | 超碰超碰在线观看| wwww国产精品欧美| 日本a在线观看| 日韩欧美国产综合一区 | 欧美一区国产在线| 日本成人黄色网| 91亚洲永久精品| 久久国产在线视频| 欧美高清激情brazzers| 国产黄色在线| 日本亚洲欧美成人| 欧美性受xxx黑人xyx性爽| 日韩欧美在线网站| 高h视频在线观看| 成人福利免费观看| 久久国产综合| 亚洲欧美自拍另类日韩| 国产欧美精品一区| 一级片在线免费播放| 亚洲午夜未删减在线观看| a一区二区三区| 久久涩涩网站| 免费看亚洲片| 天天躁日日躁aaaxxⅹ| 欧美香蕉大胸在线视频观看| 亚洲日本国产精品| 欧美中文字幕视频在线观看| 亚洲97av| 污污视频网站免费观看| 欧美激情一二三区| 亚洲天堂视频网| 日韩中文字幕免费| 精品一区二区三区中文字幕 | 亚洲二区在线视频| 欧美 日韩 综合| 97国产成人精品视频| 少妇一区二区三区| 国产精品天天av精麻传媒| 中文字幕av免费专区久久| 国产精品丝袜黑色高跟鞋| 免费不卡在线观看av| 精品国产影院| 国产日韩一区二区在线观看| 国产亚洲精久久久久久| 一区二区视频网站| 久久成人这里只有精品| 韩国女主播一区二区三区| 极品美女扒开粉嫩小泬| 久久久久国产精品麻豆ai换脸| 真实新婚偷拍xxxxx| 蜜月aⅴ免费一区二区三区| 欧美18免费视频| 天堂在线资源视频| 亚洲女厕所小便bbb| 日韩一级片免费| 国产成人久久久| 亚洲情侣在线| 91福利视频导航| 色视频免费在线观看| 国产精品h在线观看| 久久精品久久久| 国产极品一区二区| 欧美系列一区二区| 免费在线播放电影| 日本黑人久久| 国产成人免费视频网站| 日本三级视频在线| 揄拍成人国产精品视频| 亚洲精品一区在线| aaa毛片在线观看| 一区二区三区中文在线观看| 玖玖综合伊人| 波多野结衣一区二区三区在线观看| 久久一区亚洲| 久久久久亚洲av无码专区| 亚洲片在线资源| 哺乳挤奶一区二区三区免费看| 免费裸体美女网站| 亚洲一区二区三区在线| av网站在线免费播放| 国产欧美日韩综合精品二区| 久久精品国产一区二区三 | 在线播放麻豆| 精品国产乱码久久久久久蜜柚| 久久精品二区亚洲w码| 国产成人无码精品久在线观看 |