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

国产v综合v| 手机看片一区二区| 亚洲成av人片乱码色午夜| 91精品国产一区二区人妖| 肉大捧一出免费观看网站在线播放| 精品人妻午夜一区二区三区四区 | 婷婷久久五月天| 国产精品爽爽久久久久久| 国产精品久久久久久久久久妞妞| 国产亚洲一级高清| 国产人妻精品午夜福利免费| 日本欧美韩国| 亚洲一区二区三区精品在线| 日韩区国产区| 人人妻人人澡人人爽人人欧美一区 | 日本韩国欧美中文字幕| 日韩综合精品| 亚洲女人初尝黑人巨大| 美女被艹视频网站| 日产精品一区| 黄色成人在线播放| 日本福利视频导航| 国产在线高清| 丁香激情综合五月| 成人福利网站在线观看| 99久热在线精品996热是什么| 91精品国产麻豆国产在线观看 | 在线看三级电影| 国产欧美一区二区精品性色| 精品一区二区三区国产| 国产精品一二三四五区| 三级影片在线观看欧美日韩一区二区 | 91九色露脸| 一本色道久久综合无码人妻| 国产深夜精品| 久久久久久高潮国产精品视| 亚洲色偷偷综合亚洲av伊人| 国产成人三级| 亚洲美女视频网站| 一起草在线视频| 亚洲乱码一区| 欧美大片拔萝卜| 国产人妻精品久久久久野外| 亚洲91在线| 欧美系列一区二区| 毛片av免费在线观看| 乱馆动漫1~6集在线观看| 亚洲一区二区在线视频| 波多野结衣 作品| www红色一片_亚洲成a人片在线观看_| 国产精品麻豆视频| 亚洲欧美日韩精品综合在线观看| 欧美香蕉爽爽人人爽| 99久久精品国产观看| 国产精品免费看一区二区三区| 国产高清视频免费观看| 国产伦精品一区二区三区免费| 国产一区二中文字幕在线看| 亚洲在线精品视频| 精品一区二区三区视频| 成人羞羞国产免费| 国产丝袜视频在线观看| 国内精品免费**视频| 91嫩草在线视频| 国产毛片久久久久| 国产精品一区二区91| 亚洲综合色激情五月| 午夜精品一区二区三| 粉嫩高潮美女一区二区三区| 国产精品免费一区二区三区四区 | 欧美国产视频一区| 俄罗斯一级**毛片在线播放| 亚洲国产一区在线观看| 欧美国产激情视频| 九色成人搞黄网站| 欧美一级视频精品观看| 丰满少妇xbxb毛片日本| 欧美18免费视频| 亚洲人在线视频| 貂蝉被到爽流白浆在线观看| 欧美福利专区| 69久久夜色精品国产69乱青草| 亚洲欧美一区二区三区在线观看 | 亚洲成av人**亚洲成av**| 人妻无码久久一区二区三区免费| 午夜av不卡| 欧美午夜一区二区三区| 天天av天天操| 亚洲瘦老头同性70tv| 日韩资源在线观看| 日本少妇毛茸茸高潮| 日韩精彩视频在线观看| 成人性生交大片免费看视频直播 | www.国产亚洲| 俺来也官网欧美久久精品| 色综合色综合色综合色综合色综合 | 国产丝袜在线观看视频| 色88888久久久久久影院野外| 午夜啪啪小视频| 91在线一区| 一本一本久久a久久精品牛牛影视| 日韩在线视频网址| 西西裸体人体做爰大胆久久久| 国产精品丝袜白浆摸在线| www.激情五月.com| 国产亚洲综合在线| 草草草视频在线观看| 欧美日韩不卡| 亚洲国产精品久久久| 网爆门在线观看| 亚洲视频二区| 91丨九色丨国产| 一级毛片视频在线观看| 狠狠色噜噜狠狠狠狠97| 97人人模人人爽人人澡| 国产欧美日韩视频在线| 欧美精品18videos性欧美| 波多野结衣网站| av亚洲精华国产精华精华| 亚洲一区二区在线免费观看| 亚洲午夜天堂| 精品国产髙清在线看国产毛片| 国产精品成人在线视频| 亚洲一区二区三区高清不卡| 91黄在线观看| 老司机av在线免费看| 色综合激情久久| 久久久久9999| 亚洲视频观看| 成人激情av| 免费的黄网站在线观看| 在线亚洲一区二区| 女~淫辱の触手3d动漫| 亚洲青色在线| 国产精品区一区二区三在线播放| 国产精品一卡二卡三卡| 欧美日韩国产综合一区二区 | 黄色国产精品视频| 成人在线超碰| 欧美二区乱c黑人| 国产乱码精品一区二区三区精东| 国产欧美日韩麻豆91| 久在线观看视频| 18国产精品| 欧美激情videos| 成人高潮片免费视频| 亚洲欧美激情小说另类| 性猛交ⅹ×××乱大交| 欧美限制电影| 国产精品一区二区三区免费视频| 超碰国产在线观看| 色综合色狠狠天天综合色| 国产黄色三级网站| 在线综合亚洲| 精品在线一区| 韩日精品一区二区| 亚洲欧美中文字幕| 中国精品一区二区| 国产精品福利一区| 午夜视频在线网站| 在线观看国产精品入口| 91日韩在线视频| www视频在线看| 精品乱人伦小说| 日韩欧美性视频| 久久只精品国产| 九九热99视频| 亚洲网站在线| 久久riav二区三区| 日韩视频网站在线观看| 日韩专区在线观看| 亚洲h视频在线观看| 午夜成人在线视频| 免费看污黄网站在线观看| 久久一区亚洲| 青少年xxxxx性开放hg| 97品白浆高清久久久久久| 97精品视频在线观看| 国模吧精品人体gogo| 欧美日韩的一区二区| 久久亚洲成人av| 2014亚洲片线观看视频免费| 污片在线免费看| 狠狠久久婷婷| 欧美日韩高清在线一区| 亚洲黑人在线| 午夜精品一区二区三区在线视 | 国产日韩欧美精品综合| 久热在线视频观看| 亚洲国产高清一区二区三区| 日本免费高清一区| 日韩有吗在线观看| 国产精品第1页| 人人超在线公开视频| 国产亚洲欧美日韩美女| 超碰免费在线97| 91福利社在线观看| 黄色一级视频免费| 国产精品全国免费观看高清 | 国产成年妇视频| 欧美日韩性生活视频| 亚洲女人久久久| 成人黄色小视频在线观看| www.色偷偷.com| 好吊视频一区二区三区四区| 日韩精品欧美专区| 国产精品自在线拍| 亚洲www永久成人夜色| 日韩欧美一区二区三区免费观看| 久久99视频精品| av二区在线| 日韩成人av一区| 精品久久久免费视频| 欧美色图一区二区三区| 毛片在线免费视频| 亚洲一区二区三区小说| 91麻豆精品久久毛片一级| 久久综合九色综合97婷婷| 色诱av手机版| 韩国三级电影一区二区| 久久久久人妻精品一区三寸| 午夜久久福利| 手机看片日韩国产| 成人aaaa| 色综合久久久久久久久五月| 亚洲警察之高压线| 精品国产一二| 亚洲一区二区电影| 91亚洲精华国产精华| 福利一区二区免费视频| 国产97色在线| 欧美舌奴丨vk视频| 91国内在线视频| 欧美黄色视屏| 欧美贵妇videos办公室| 羞羞污视频在线观看| 久久精品国产一区二区电影| 在线中文资源天堂| 在线免费看av不卡| 成人免费在线电影| 中日韩美女免费视频网站在线观看| 久久久久久久影视| 国产丝袜精品第一页| 欧美精品少妇| 亚洲美女在线视频| 国产一二三在线观看| 亚洲人成在线电影| 青青草免费观看免费视频在线| 日韩精品视频免费| 免费毛片在线| 亚洲人成网站色ww在线| xxxxx日韩| 综合久久五月天| 日韩欧美小视频| 色吧影院999| 国产三级在线播放| 欧美日韩国产二区| 国产va在线视频| 2020国产精品视频| 欧美日韩精品免费观看视完整| 国产成人免费91av在线| 另类一区二区| 91日韩在线播放| 精品福利网址导航| 欧美韩国日本精品一区二区三区| 国产精品一在线观看| 亚洲欧美国产一区二区| 久久久久久久久久久9不雅视频| 男人j进女人j| 亚洲日韩成人| wwwwww.色| 国产乱码精品1区2区3区| 国产av一区二区三区传媒| 成人av综合一区| 成人午夜剧场视频网站| 国产精品九色蝌蚪自拍| 日韩在线观看视频一区二区| 亚洲成av人影院在线观看网| 亚洲GV成人无码久久精品 | 久久人人爽人人| 日韩欧美一区二区三区免费观看| 91九色国产社区在线观看| a看欧美黄色女同性恋| 欧美日韩大片一区二区三区| 婷婷亚洲图片| 国产淫片免费看| 激情文学综合丁香| 日本69式三人交| 亚洲国产精品传媒在线观看| 欧美xxxx黑人xyx性爽| 色网综合在线观看| 国产av一区二区三区| 亚洲欧洲av一区二区| 青青草原国产在线| 热99精品里视频精品| 亚洲国产视频二区| 清纯唯美一区二区三区| 欧美日韩亚洲一区三区| 波多野结衣作品集| 高清不卡一区二区在线| 五月婷婷欧美激情| 亚洲成人资源网| 97人妻精品一区二区三区视频| 日韩av综合中文字幕| 五月天激情在线| 国产精品日韩欧美综合| 欧美日韩一本| 在线观看成人免费| 日韩二区三区四区| 免费a v网站| 一区二区视频在线| 日韩乱码一区二区三区| 亚洲国产古装精品网站| 成人在线播放| 国产视频999| 精品国产视频| 女性女同性aⅴ免费观女性恋| 国产精品综合二区| 麻豆一区在线观看| 在线观看免费一区| 亚洲色偷精品一区二区三区| 欧美国产一区二区三区| 日韩五码电影| 性欧美.com| 久热精品在线| 右手影院亚洲欧美| 精品成人国产在线观看男人呻吟| 国产欧美熟妇另类久久久| 自拍视频国产精品| 日本欧美一区| 青青成人在线| 久久亚洲一区| 欧美老熟妇乱大交xxxxx| 午夜成人免费视频| 天天操天天爱天天干| 韩国日本不卡在线| 国产香蕉精品| 欧美日韩亚洲一| 91一区一区三区| 日本一区二区免费电影| 亚洲精品久久7777777| 国产免费拔擦拔擦8x在线播放| 国产成人免费电影| 亚洲福利免费| 国产午夜在线一区二区三区| 亚洲在线一区二区三区| 亚洲黄色在线观看视频| 久久久久久国产精品久久| 风间由美中文字幕在线看视频国产欧美| 影音先锋成人资源网站| 国产成人免费av在线| 国产精品111| 亚洲精品久久久久久久久| 制服丝袜专区在线| 欧美不卡在线一区二区三区| 久久精品一区| 国产在线免费av| 欧美一区二区三区不卡| 青春草在线免费视频| 久久国产一区| 日韩精品电影在线| 最新av电影网站| 亚洲精品一区二区三区在线观看| 九色porny自拍视频在线观看| 免费看成人午夜电影| 免费成人小视频| 欧洲猛交xxxx乱大交3| 精品国产一区二区三区四区四 | 欧美一区二区| 国产51自产区| 色婷婷久久一区二区三区麻豆| yw视频在线观看| y111111国产精品久久婷婷| 136国产福利精品导航网址| 毛片网站免费观看| 欧美日本一区二区| av伦理在线| 亚洲v欧美v另类v综合v日韩v| 国内精品在线播放| 丰满少妇乱子伦精品看片| 中日韩美女免费视频网址在线观看 | 麻豆影视国产在线观看| 电影午夜精品一区二区三区| 亚洲综合国产激情另类一区| 特级西西www444人体聚色| 欧美一区二区在线观看| 在线天堂中文资源最新版| 一区二区三区国| 成人免费高清在线| 中文字幕免费高清在线观看| 久久69精品久久久久久久电影好 | 亚洲午夜性刺激影院| 国产精品视频首页| 超碰影院在线观看| 亚洲黄色免费电影| 在线观看美女网站大全免费| 丁香婷婷久久久综合精品国产 | 国产女同一区二区| 亚洲精品偷拍| 91视频综合网|