SpringBoot系列--统一异常处理和统一数据返回

前言
在实际开发中,我们希望对接口结果的返回,进行一次统一的封装,即便接口发生异常。比如,我们可以这样设计接口的返回:
统一数据返回
我们希望有一种统一的方式来处理异常,并且有一种统一的方式来对接口结果进行返回,并且尽可能少编写代码,尽可能和业务逻辑的处理分离开来。
实践
第一步:定义通用的数据返回对象
GlobalResponse
这里我们定义通用的数据返回对象,并且提供一个正常数据返回/一个异常数据返回的快速设置方法。
第二步:定义统一处理handler
GlobalExceptionHandler
@ControllerAdvice public class GlobalExceptionHandler {
@ExceptionHandler(Exception.class)
public ResponseEntity<ErrorResponse> handleException(Exception ex) {
ErrorResponse errorResponse = new ErrorResponse(HttpStatus.INTERNAL_SERVER_ERROR.value(), ex.getMessage());
return new ResponseEntity<>(errorResponse, HttpStatus.INTERNAL_SERVER_ERROR);
}
}
运行结果
接口正常返回
正常返回的数据被统一包装
接口异常
异常返回
面试宝典推荐
在这金三银四的季节,栈长为大家准备了四份面试宝典:
- 《java面试宝典5.0》
- 《Java(BAT)面试必备》
- 《350道Java面试题:整理自100+公司》
- 《资深java面试宝典-视频版》
分别适用于初中级、中高级,以及资深级工程师的面试复习。
内容包含java基础、javaweb、各个性能优化、JVM、锁、高并发、反射、Spring原理、微服务、Zookeeper、数据库、数据结构、限流熔断降级等等。
获取方式:点“在看”,V信扫描上面二维码:注明面试领取,更多精彩陆续奉上。