当前位置:网站首页>Global exception handlers and unified return results
Global exception handlers and unified return results
2022-06-28 09:36:00 【Eat more porridge in the morning】
1、 Unified return result class
/** * @author * @ClassName: Result * @Description: Unified return result class Guaranteed serialization json When , If it is null The object of ,key Will disappear * @date 2021/9/18 15:32 */
@Data
public class Result<T> implements Serializable {
private Boolean success;
private Integer code;
private String message;
private T data;
public Result() {
}
private Result(Boolean success, Integer code) {
this.success = success;
this.code = code;
}
private Result(Boolean success, Integer code, T data) {
this.success = success;
this.code = code;
this.data = data;
}
private Result(Boolean success, Integer code, String message, T data) {
this.success = success;
this.code = code;
this.message = message;
this.data = data;
}
private Result(Boolean success, Integer code, String message) {
this.success = success;
this.code = code;
this.message = message;
}
public static <T> Result<T> success() {
return new Result<T>(true, ResponseEnum.SUCCESS.getCode(),ResponseEnum.SUCCESS.getMessage());
}
public static <T> Result<T> successMessage(String message) {
return new Result<T>(true, ResponseEnum.SUCCESS.getCode(), message);
}
public static <T> Result<T> success(T data) {
return new Result<T>(true, ResponseEnum.SUCCESS.getCode(),ResponseEnum.SUCCESS.getMessage(),data);
}
public static <T> Result<T> success(String message, T data) {
return new Result<T>(true, ResponseEnum.SUCCESS.getCode(), message, data);
}
public static <T> Result<T> error() {
return new Result<T>(false, ResponseEnum.ERROR.getCode(), ResponseEnum.ERROR.getMessage());
}
public static <T> Result<T> errorMessage(String errorMessage) {
return new Result<T>(false, ResponseEnum.ERROR.getCode(), errorMessage);
}
public static <T> Result<T> errorCodeMessage(Integer errorCode, String errorMessage) {
return new Result<T>(false, errorCode, errorMessage);
}
}
2、 Error code enumeration class
/** * @author * @ClassName: ResponseEnum * @Description: Response status code and enumeration type of prompt message * @date 2021/9/17 15:07 */
@Getter
public enum ResponseEnum {
SUCCESS(200," Successful operation "),
ERROR(500," operation failed "),
INVALID_PARAM_ERROR(400," Invalid request parameter "),
;
private Integer code;
private String message;
ResponseEnum(Integer code, String message) {
this.code = code;
this.message = message;
}
}
3、 Custom exception handling class
/** * @author * @ClassName: CustomException * @Description: Custom exception * @date 2021/9/18 15:43 */
@Data
public class CustomException extends RuntimeException {
private Integer code;
public CustomException(ResponseEnum responseEnum) {
super(responseEnum.getMessage());
this.code = responseEnum.getCode();
}
public CustomException(ResponseEnum responseEnum, Throwable throwable) {
super(responseEnum.getMessage(), throwable);
this.code = responseEnum.getCode();
}
}
4、 Global exception handling class
/** * @author * @ClassName: GlobalUniformException * @Description: Globally unified exception handling class * @date 2021/9/18 15:48 */
@RestControllerAdvice
@Slf4j
public class GlobalUniformException {
/** * Handle custom exceptions --------> Specify the exception type to be handled by the so and so method * @param e * @return */
@ExceptionHandler(CustomException.class)
public Result personalException(CustomException e){
e.printStackTrace();
return Result.errorCodeMessage(e.getCode(),e.getMessage());
}
/** * Handle exceptions other than custom exceptions * @param e * @return */
@ExceptionHandler(Exception.class)
public Result handlerOtherException(Exception e){
e.printStackTrace();
return Result.errorCodeMessage(ResponseEnum.ERROR.getCode(),ResponseEnum.ERROR.getMessage());
}
}
5、 The test returns a uniform result
/** * @ * @ClassName: HelloController * @Description: test result * @date 2021/9/18 15:48 */
@RestController
@RequestMapping("/say")
public class HelloController {
@PostMapping("/hello")
public Result sayHello(User user){
if (StringUtils.isEmpty(user.getName())) {
return Result.errorMessage(ResponseEnum.ERROR.getMessage());
}
user.setName(" Xiao Ming ");
user.setAge(20);
return Result.success(user);
}
}
Browser test results :

postman Browser test results :

6. The test throws an exception :
@RestController
@PostMapping("/say")
public class HelloController {
@RequestMapping("/hello")
public Result sayHello(User user){
User user = new User();
if (user.getName() == null) {
throw new CustomException(ResponseEnum.INVALID_PARAM_ERROR);
}
user.setName(" Xiao Ming ");
user.setAge(20);
return Result.success(user);
}
}
postman Test failure results :

Browser test failure results :

边栏推荐
- Bron filter Course Research Report
- Inventory of excellent note taking software: good-looking and powerful visual note taking software, knowledge map tools heptabase, hydrogen map, walling, reflect, infranodus, tiddlywiki
- Xiaomi's payment company was fined 120000 yuan, involving the illegal opening of payment accounts, etc.: Lei Jun is the legal representative, and the products include MIUI wallet app
- Key summary V of PMP examination - execution process group
- 组合模式(Composite Pattern)
- Decision table method for basic content learning of software testing (2)
- Custom exception classes and exercises
- Calcul des frais d'achat et de vente d'actions
- 全局异常处理器与统一返回结果
- 创建多线程的方法---1创建Thread类的子类及多线程原理
猜你喜欢

Boundary value analysis method for learning basic content of software testing (2)

Decision table method for basic content learning of software testing (2)

Valentine's Day - VBS learning (sentences, love words)

PMP考试重点总结五——执行过程组

SQL 優化經曆:從 30248秒到 0.001秒的經曆

Dolphin scheduler uses system time

Apache Doris becomes the top project of Apache

買賣股票費用計算

P2394 yyy loves Chemistry I

1181:整数奇偶排序
随机推荐
Static page of pinyougou mall
4 methods for exception handling
满电出发加速品牌焕新,长安电动电气化产品吹响“集结号”
Dbeaver connects to kingbasees V8 (ultra detailed graphic tutorial)
new URL(“www.jjj.com“)
Do static code blocks always execute first? The pattern is smaller!!!
Calcul des frais d'achat et de vente d'actions
Data visualization makes correlation analysis easier to use
在本类私有属性直接使用?new()在使用!!!
多线程-并发并行-线程进程
redis5.0的槽点迁移,随意玩(单机迁移集群)
RESTful风格
Calculation of stock purchase and sale expenses
Divide and rule classic Hanoi
PMP needs to master its own learning methods
01 distributed system overview
Inventory of excellent note taking software: good-looking and powerful visual note taking software, knowledge map tools heptabase, hydrogen map, walling, reflect, infranodus, tiddlywiki
优秀笔记软件盘点:好看且强大的可视化笔记软件、知识图谱工具Heptabase、氢图、Walling、Reflect、InfraNodus、TiddlyWiki
Android studio interview preparation
P2394 yyy loves Chemistry I