统一结果返回类与统一异常处理

it2023-08-06  78

一、对程序的结果进行统一返回

创建接口,定义返回码

package com.atguigu.commonutils; public interface ResultCode { public static Integer SUCCESS = 20000; public static Integer ERROR = 20001;}

创建实体类

public class Result { @ApiModelProperty(value = "是否成功") private Boolean success; @ApiModelProperty(value = "返回码") private Integer code; @ApiModelProperty(value = "返回消息") private String message; @ApiModelProperty(value = "返回数据") private Map<String, Object> data = new HashMap<String, Object>(); private R(){} public static Result ok(){ Result r = new Result (); r.setSuccess(true); r.setCode(ResultCode.SUCCESS); r.setMessage("成功"); return r; } public static Result error(){ Result r = new Result (); r.setSuccess(false); r.setCode(ResultCode.ERROR); r.setMessage("失败"); return r; } public Result success(Boolean success){ this.setSuccess(success); return this; } public Result message(String message){ this.setMessage(message); return this; } public Result code(Integer code){ this.setCode(code); return this; } public Result data(String key, Object value){ this.data.put(key, value); return this; } public Result data(Map<String, Object> map){ this.setData(map); return this; } }

二、统一异常处理

对程序运行可能产生的异常进行处理

统一异常处理

@ControllerAdvice public class GlobalExceptionHandler { @ExceptionHandler(Exception.class) @ResponseBody public Result error(Exception e){ e.printStackTrace(); return Result .error(); } }

处理特定异常

@ExceptionHandler(ArithmeticException.class) @ResponseBody public Result error(ArithmeticException e){ e.printStackTrace(); return Result .error().message("执行了自定义异常"); }

自定义异常

先创建实体类

@Data @AllArgsConstructor @NoArgsConstructor public class GuliException extends RuntimeException { @ApiModelProperty(value = "状态码") private Integer code; private String msg; }

在全局异常处理类中添加方法

@ExceptionHandler(GuliException.class) @ResponseBody public Result error(GuliException e){ e.printStackTrace(); return Result .error().message(e.getMsg()).code(e.getCode()); }
最新回复(0)