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

SpringBoot實現全局異常處理總結

開發 后端
今天主要講解了@ControllerAdvice+@ExceptionHandler進行統一的在Controller層上的全局異常處理。

SpringBoot實現全局異常處理

在項目開發中出現異常時很平常不過的事情,我們處理異常也有很多種方式,可能如下:

  public int div(int a ,int b){
int c=0;
try{
c=a/b;
}catch (Exception ex){
ex.printStackTrace();
}
return c;
}

如果我們這樣處理異常,代碼中就會出現特別多的異常處理模塊,這樣代碼就會變得可讀性非常差,而且業務模塊邏輯會夾雜特別多的非業務邏輯。但是在項目開發的過程中我們應該將主要精力放在業務模塊,除了必要的異常處理模塊最好不要再包含其他無關緊要的代碼。那么我們如何處理項目中無處不在的異常呢?這就引出了我們要介紹的全局異常處理方法,主要有兩種種方式:

  • HandlerExceptionResolver。
  • @ControllerAdvice+@ExceptionHandler 今天我們主要介紹一下@ControllerAdvice+@ExceptionHandler模式處理全局異常。

全局異常處理

首先我們先介紹一下@ControllerAdvice和@ExceptionHandler

  • @ControllerAdvice注解:他是一個比較特殊的@Component,用于定義全局異常處理類作用在所有的@Controller類型的接口上。
  • @ExceptionHandler注解:用于聲明處理異常的方法。

配置全局異常

@ControllerAdvice+@ExceptionHandler只要設計得當,就不用再在Controller使用trg-catch了!下面我們先寫介紹一個Controller層全局異常處理類。

@ControllerAdvice
public class GlobalExceptionHandler {
@ResponseBody
@ExceptionHandler(Exception.class)
public CommonResult exceptionHandler(HttpServletRequest request, Exception exception) throws Exception {
Map<String, Object> result = new HashMap<>(3);
String message =exception.getMessage()+request.getRequestURL().toString();
return CommonResult.failed(message);
}
}

注:@ResponseBody的作用其實是將java對象轉為json格式的數據。然后到這里為止,一個簡單的全局異常處理解決方式就完成了,這只是一個簡單的異常處理方式,遠遠不能達到完整項目中全局異常處理的方案。

全局異常處理的升級

我們項目中業務處理,可以通過自定義的異常知道哪一個模塊發生異常,并且不同的業務模塊也有不同的異常處理方式,這也方便我們做擴展

public class ServiceException extends RuntimeException {
private IErrorCode errorCode;
public ServiceException(IErrorCode errorCode) {
super(errorCode.getMessage());
this.errorCode = errorCode;
}
public ServiceException(String message) {
super(message);
}
public ServiceException(Throwable cause) {
super(cause);
}
public ServiceException(String message, Throwable cause) {
super(message, cause);
}
public IErrorCode getErrorCode() {
return errorCode;
}
}

加入自定義異常處理

@ControllerAdvice
public class GlobalExceptionHandler {
/**
* 處理所有Service層異常
*/
@ResponseBody
@ExceptionHandler(value = ServiceException.class)
public CommonResult handle(ServiceException e) {
if (e.getErrorCode() != null) {
return CommonResult.failed(e.getErrorCode());
}
return CommonResult.failed(e.getMessage());
}
/**
* 處理所有不可知的異常
*/
@ResponseBody
@ExceptionHandler(Exception.class)
public CommonResult exceptionHandler(HttpServletRequest request, Exception exception) throws Exception {

Map<String, Object> result = new HashMap<>(3);
String message =exception.getMessage()+request.getRequestURL().toString();
return CommonResult.failed(message);
}

}

處理 Controller 數據綁定、數據校驗的異常

在用戶登錄Model字段上注解數據校驗規則。

@Data
@EqualsAndHashCode(callSuper = false)
public class UserLoginParam {
@NotEmpty
private String username;
@NotEmpty
private String password;
}

SpringBoot中可以使用@Validated + @RequestBody注解方式實現數據綁定和數據校驗。例如登錄方式為:

 @ApiOperation(value = "登錄以后返回token")
@RequestMapping(value = "/login", method = RequestMethod.POST)
@ResponseBody
public CommonResult login(@Validated @RequestBody UmsAdminLoginParam umsAdminLoginParam) {
String token = adminService.login(umsAdminLoginParam.getUsername(), umsAdminLoginParam.getPassword());
if (token == null) {
return CommonResult.validateFailed("用戶名或密碼錯誤");
}
Map<String, String> tokenMap = new HashMap<>();
tokenMap.put("token", token);
tokenMap.put("tokenHead", tokenHead);
return CommonResult.success(tokenMap);
}

如果數據校驗不對數據拋出的異常為MethodArgumentNotValidException,所以我們可以在全局異常處理類中添加對MethodArgumentNotValidException異常的處理聲明,就可以實現全局處理數據校驗和綁定的異常了,實現如下:

  @ResponseBody
@ExceptionHandler(value = MethodArgumentNotValidException.class)
public CommonResult handleValidException(MethodArgumentNotValidException e) {
BindingResult bindingResult = e.getBindingResult();
String message = null;
if (bindingResult.hasErrors()) {
FieldError fieldError = bindingResult.getFieldError();
if (fieldError != null) {
message = fieldError.getField()+fieldError.getDefaultMessage();
}
}
return CommonResult.validateFailed(message);
}

通過上面介紹的未知異常、數據校驗和自定義全局異常所有的Controller層的異常處理方式全部都集中到了GlobalExceptionHandler類中,那么我們在Controller類中就不再需要收到記錄錯誤了。

GlobalExceptionHandler全部代碼

@ControllerAdvice
public class GlobalExceptionHandler {
@ResponseBody
@ExceptionHandler(value = ApiException.class)
public CommonResult handle(ApiException e) {
if (e.getErrorCode() != null) {
return CommonResult.failed(e.getErrorCode());
}
return CommonResult.failed(e.getMessage());
}
@ResponseBody
@ExceptionHandler(Exception.class)
public CommonResult exceptionHandler(HttpServletRequest request, Exception exception) throws Exception {
Map<String, Object> result = new HashMap<>(3);
String message =exception.getMessage()+request.getRequestURL().toString();
return CommonResult.failed(message);
// return result;
}
@ResponseBody
@ExceptionHandler(value = MethodArgumentNotValidException.class)
public CommonResult handleValidException(MethodArgumentNotValidException e) {
BindingResult bindingResult = e.getBindingResult();
String message = null;
if (bindingResult.hasErrors()) {
FieldError fieldError = bindingResult.getFieldError();
if (fieldError != null) {
message = fieldError.getField()+fieldError.getDefaultMessage();
}
}
return CommonResult.validateFailed(message);
}
}

總結

今天主要講解了@ControllerAdvice+@ExceptionHandler進行統一的在Controller層上的全局異常處理。

責任編輯:姜華 來源: 今日頭條
相關推薦

2017-08-10 10:28:43

SpringBootSpring

2019-01-24 16:11:19

前端全局異常數據校驗

2025-09-12 09:31:29

2025-08-28 02:15:00

WinFormNLog工具類

2023-12-13 13:28:00

Spring全局異常處理架構

2023-12-27 07:53:08

全局異常處理處理應用

2009-02-06 14:11:36

ASP.NET.NET全局異常處理

2021-04-20 10:50:38

Spring Boot代碼Java

2019-08-29 14:30:16

代碼開發工具

2024-10-28 08:32:22

統一接口響應SpringBoot響應框架

2011-08-05 14:02:17

MySQL數據庫異常處理

2016-12-15 13:31:20

Java異常處理經驗

2009-11-06 15:25:25

WCF異常

2025-02-05 10:02:03

Locust測試異常處理

2023-06-15 14:09:00

解析器Servlet容器

2022-08-03 07:07:10

Spring數據封裝框架

2022-05-03 10:43:43

SpringJava

2013-08-22 17:10:09

.Net異常處理

2012-12-21 10:48:20

Java異常

2023-12-11 14:19:00

Java程序異常
點贊
收藏

51CTO技術棧公眾號

日韩精品一二三四| 免费成人网www| 亚洲国产精品一区二区久久恐怖片| yellow视频在线观看一区二区| 国产无遮挡又黄又爽又色| 欧美一级一片| 欧美精品丝袜中出| 亚洲人成无码网站久久99热国产| 精品久久久久一区二区三区| 麻豆一区二区99久久久久| 欧美夫妻性视频| 亚洲人成人无码网www国产 | 色屁屁一区二区| 在线不卡日本| 欧美男男同志| 国产成人免费视频精品含羞草妖精| 日本精品在线视频| 欧美色图亚洲天堂| 成人羞羞视频播放网站| 亚洲大胆人体在线| 第一区免费在线观看| 国产精品13p| 亚洲人成网站影音先锋播放| 日本精品二区| 国产99在线播放| 正在播放国产一区| 制服丝袜中文字幕第一页 | 日本一区二区视频在线| 亚洲影院色在线观看免费| 欧美男人亚洲天堂| 亚洲视频综合| 久久久久www| 先锋影音av在线| 免费福利视频一区| 日韩欧美在线影院| 夜夜夜夜夜夜操| 777午夜精品电影免费看| 欧美日韩国产一区中文午夜| wwwwww欧美| jizz性欧美| 中文字幕在线不卡一区二区三区| 欧美日韩综合网| 香蕉国产在线视频| 不卡影院免费观看| 亚洲综合中文字幕在线观看| 在线观看日批视频| 日韩在线一区二区| 国产成人精品国内自产拍免费看 | 国产精品免费视频一区二区| 国产人妻精品一区二区三区| 久久成人免费网| 国产精品偷伦免费视频观看的| 中文字幕黄色片| 久久成人国产| 国产v综合ⅴ日韩v欧美大片| 久久夜色精品国产噜噜亚洲av| 亚洲精品乱码久久久久久蜜桃麻豆| 色综合91久久精品中文字幕| 欧美成人三级视频| 好看的av在线不卡观看| 欧美黄色成人网| 国产精品成人网站| 一区二区久久| 青青草99啪国产免费| 久久久久久久久久久久久av| 模特精品在线| 国产成人精品视频在线| 国产男人搡女人免费视频| 日本vs亚洲vs韩国一区三区| 国产精品无码专区在线观看| 99产精品成人啪免费网站| 激情综合色丁香一区二区| 91免费精品国偷自产在线| 国内精品久久久久久久久久| 成人午夜视频在线| 久久精彩视频| 337p日本欧洲亚洲大胆鲁鲁| 亚洲日本在线天堂| 欧美一区二区激情| 欲香欲色天天天综合和网| 91黄色小视频| 伊人色在线视频| 超碰地址久久| 国产午夜精品美女视频明星a级| 91麻豆制片厂| 欧美日本一区| 欧美中文字幕视频在线观看| 亚洲网站在线免费观看| 国产99精品国产| 欧美色图亚洲自拍| 国产在线高清理伦片a| 亚洲h动漫在线| 高清av免费看| 国产精品丝袜在线播放| 这里只有精品视频| 免看一级a毛片一片成人不卡| 新67194成人永久网站| 91精品国产综合久久久久久蜜臀| 亚洲精品久久久久久久久久久久久久 | 色悠悠亚洲一区二区| 不卡的在线视频| 全国精品免费看| 北条麻妃一区二区三区中文字幕| 国产无码精品久久久| 奇米影视一区二区三区小说| 波多野结衣一区二区三区在线观看| 久草在线青青草| 亚洲最大色网站| 邪恶网站在线观看| 精品欧美午夜寂寞影院| 俺也去精品视频在线观看| 国产乱国产乱老熟| 国产精品一二三区| 亚洲精品一区二区三区四区五区| 538视频在线| 欧美一区二区三区在线| 久久av无码精品人妻系列试探| 欧美女激情福利| 成人在线免费观看视视频| 青草久久伊人| 亚洲成a人片综合在线| 91福利免费观看| 国产成人3p视频免费观看| 欧美精品国产精品日韩精品| 97超碰资源站| 国产日韩影视精品| 男女高潮又爽又黄又无遮挡| 91精品国产自产在线丝袜啪 | 乱一区二区av| 欧美日韩亚洲在线| 麻豆网站免费在线观看| 欧美大片在线观看一区二区| 少妇视频一区二区| 日本午夜精品视频在线观看| 明星裸体视频一区二区| 美女搞黄视频在线观看| 日韩免费性生活视频播放| 日韩成人短视频| 久久国产欧美日韩精品| 先锋在线资源一区二区三区| 亚洲伦乱视频| 国产一区二区三区四区福利| 亚洲天堂男人av| 91丨porny丨中文| 久久综合色视频| 另类尿喷潮videofree| 97香蕉久久夜色精品国产 | 在线电影av不卡网址| 欧美人一级淫片a免费播放| 91日韩在线专区| 欧美黄网站在线观看| 天天久久夜夜| 国产成人亚洲精品| 九九热视频在线观看| 色天天综合色天天久久| 日本xxxxxxxxx18| 日本在线播放一区二区三区| 亚洲成人第一| 高清一区二区| 欧美日韩成人免费| 人妻少妇精品无码专区久久| 天天影视色香欲综合网老头| v8888av| 日本伊人午夜精品| 亚洲综合第一| 我要色综合中文字幕| 久久久亚洲精品视频| 天堂av在线7| 欧洲人成人精品| 一起操在线播放| 国产91精品一区二区麻豆网站| 国产精品成人久久电影| 亚洲专区视频| 成人久久18免费网站图片| 性欧美video高清bbw| 亚洲国产成人精品久久| 亚洲欧美一二三区| 亚洲欧美日韩电影| 日韩黄色一区二区| 久久一二三四| 制服国产精品| 久久99精品国产自在现线| 日本电影亚洲天堂| 精产国品自在线www| 欧美精品一区二区三区蜜桃视频 | 亚洲第一网站免费视频| 国产一级免费视频| 亚洲欧洲一区二区在线播放| 国产精品一区二区在线免费观看| 久久午夜精品| 国产女人18毛片| 亚洲国产欧美日韩在线观看第一区| 国产精品久久久久久久午夜| 污污的视频在线观看| 日韩久久免费视频| 99国产在线播放| 欧美性少妇18aaaa视频| 神马午夜精品91| 91丨九色丨蝌蚪丨老版| 天天摸天天舔天天操| 亚洲黄色成人| 中文字幕欧美日韩一区二区| 欧美日韩一区二区三区在线电影 | 视频一区二区在线播放| 欧美男女性生活在线直播观看| 成年免费在线观看| 亚洲视频在线观看三级| 欧美老熟妇乱大交xxxxx| 国产精品18久久久久久vr| 日韩一级片播放| 激情亚洲网站| 最新av在线免费观看| 国产成人影院| 国产乱码一区| 国产精品**亚洲精品| 日韩美女在线看| av资源中文在线天堂| 久久久国产精品亚洲一区| 免费福利在线视频| 亚洲第一精品夜夜躁人人躁| 国产偷拍一区二区| 欧美色欧美亚洲另类二区| 久久久久久91亚洲精品中文字幕| 一级日本不卡的影视| 国产精品99久久久久久成人| 中文字幕乱码一区二区免费| 永久免费看mv网站入口78| 成人免费视频视频| 黄色片子免费看| 精品在线免费视频| 在线看的黄色网址| 新狼窝色av性久久久久久| 拔插拔插海外华人免费| 欧美日韩国产高清| 成年丰满熟妇午夜免费视频| 久久精品久久久| 一区二区国产日产| 日韩精品dvd| 亚欧精品在线| 久久社区一区| 一区二区三区四区欧美日韩| 久久国产精品亚洲人一区二区三区 | 中文字幕国产传媒| 丝袜诱惑制服诱惑色一区在线观看 | 在线观看一区二区三区三州| 欧州一区二区| 亚洲第一导航| 天天综合国产| 一区二区在线观| 五月久久久综合一区二区小说| 制服国产精品| 欧美高清日韩| 精品一二三四五区| 亚洲国产免费| 18禁男女爽爽爽午夜网站免费| 久久国产福利| 一路向西2在线观看| 国内久久精品视频| 亚洲一区二区三区四区精品| 国产风韵犹存在线视精品| 精品人妻无码中文字幕18禁| 不卡视频在线观看| 超碰97人人干| 国产精品女主播在线观看| 欧美色视频一区二区三区在线观看| 亚洲三级在线播放| 精品无码久久久久久久| 狠狠躁夜夜躁人人躁婷婷91 | 亚洲精品在线看| 成人高清免费观看mv| 久久精品国产欧美亚洲人人爽| 尤物在线网址| 日本久久91av| 国产色99精品9i| 激情伦成人综合小说| 免费视频亚洲| 二级片在线观看| 亚洲第一毛片| 成人精品视频一区二区| 国产一区二区三区不卡在线观看| 91亚洲一线产区二线产区| 91一区在线观看| 天堂网av2018| 午夜成人在线视频| 91精品视频免费在线观看| 精品久久久久99| fc2在线中文字幕| 久久久精品一区二区三区| 天堂电影一区| 成人av资源在线播放| 日韩成人av在线资源| 亚洲午夜精品一区二区| 亚洲精品综合| 色国产在线视频| www.日韩在线| 三级黄色在线观看| 色诱亚洲精品久久久久久| 亚洲AV无码一区二区三区性| 亚洲人午夜精品免费| 污片在线免费观看| 国产精品自拍偷拍视频| 欧美aaaaaaaa牛牛影院| 男人的天堂成人| 久久精品91| 一级黄色免费视频| 国产精品久线在线观看| 天天综合网久久综合网| 日韩欧美在线1卡| av在线播放网站| 91成人福利在线| 亚洲精品一区二区三区中文字幕| 少妇特黄a一区二区三区| 亚洲无线视频| 一起草最新网址| 国产精品蜜臀在线观看| 9i看片成人免费看片| 精品美女在线播放| 菠萝菠萝蜜在线观看| 国产伦精品免费视频| 伊人久久大香线蕉av不卡| 岛国大片在线播放| 国产一区二区美女诱惑| 女人黄色一级片| 色老头久久综合| 天天操天天干天天| 欧美激情伊人电影| 免费欧美网站| 日日噜噜噜夜夜爽爽| 天堂久久久久va久久久久| 国产一级二级在线观看| 香蕉加勒比综合久久| 亚洲免费一级片| 久久久久久国产| 一区视频网站| 国产激情片在线观看| 国产精品一卡二| 精品欧美一区二区久久久久| 91精品国产麻豆| 久久亚洲天堂| 91美女福利视频高清| 91精品高清| 樱花草www在线| 中文字幕日韩av资源站| 97人妻精品一区二区三区软件| 日韩在线免费观看视频| 日韩在线电影| 麻豆md0077饥渴少妇| 国产一区在线精品| 538任你躁在线精品视频网站| 欧美一区二区三区在线看| 91精选在线| 国产手机精品在线| 国产视频久久| 亚洲图片另类小说| 欧美专区日韩专区| 超碰97在线免费观看| 国产日本欧美视频| 综合五月婷婷| 动漫美女无遮挡免费| 精品久久久视频| 国产九色在线| 成人黄色大片在线免费观看| 伊人色**天天综合婷婷| 国产一级二级av| 欧美日韩另类字幕中文| 高清在线观看av| 91精品久久久久久久久久| 亚洲欧美综合| 一级国产黄色片| 欧美丝袜丝nylons| 91网址在线观看| 国产在线精品一区二区中文| 日韩精品高清不卡| 美女三级黄色片| 欧美精品一区二区在线观看| 久久青青视频| 一级黄色免费在线观看| 成人精品视频一区| 久久精品五月天| 欧美日韩国产va另类| 亚洲肉体裸体xxxx137| 182午夜在线观看| 亚洲二区在线观看| www.在线视频.com| 99热在线国产| 日韩福利视频导航| 午夜69成人做爰视频| 亚洲毛片在线看| 欧美第一在线视频| 精品一卡二卡三卡| 亚洲老妇xxxxxx| 久草视频在线看| av成人观看| 麻豆精品一二三| 精品美女久久久久| 久久精品青青大伊人av| 亚洲婷婷影院| 免费黄色a级片| 欧美久久一二区| 欧美性猛交xxx高清大费中文|