Springboot 自定义异常类及自定义返回编码
springboot中定义异常类,从而统一返回值类型,让业务更加完美
·
统一返回值
好处
可以让我们控制层【controller】统一返回值类型,不需要再考虑返回 集合或者是对象。
我们可以定义一个接口 或者 枚举,在里面定义一些返回的编码,如 404,400等,配合
统一返回编码
我这里使用的是接口:
/**
* 自定义返回状态码
*/
public interface Constants {
String CODE_200 = "200"; // 正确
String CODE_400 = "400"; // 请求参数错误
String CODE_500 = "500"; // 业务错误
String CODE_401 = "401"; // 权限不足
String CODE_601 = "601"; // 自定义(用户名不存在)
String CODE_602 = "602"; // 自定义(密码不存在)
}
统一返回值类型
我这里使用一个类,然后进行改造,有两种改造方式返回方式:
先定义返回字段:
private String code; // 返回的状态码
private String msg; // 错误信息,成功的时候想携带一些也可以
private Object data; // 数据,只有正确的时候才携带
- 通过【new】对象,返回不同的状态以及数据
// 无参构造必须有
public Result() {
}
// 通过调用这个构造器,统一返回值类型
public Result(String code, String msg, Object data) {
this.code = code;
this.msg = msg;
this.data = data;
}
- 在这个类中定义一些静态方法【成功,失败】,随时对地可以调用
/*
返回一个200状态码,无返回信息和数据
*/
public static Result success(){
return new Result(Constants.CODE_200,"",null);
}
/*
返回一个200状态码,并且携带参数,无返回信息
*/
public static Result success(Object data){
return new Result(Constants.CODE_200,"",data);
}
/*
返回一个固定带有500状态码的错误信息
*/
public static Result error(){
return new Result(Constants.CODE_500,"业务异常",null);
}
/*
返回一个自定义返回状态码以及错误信息
*/
public static Result error(String code,String msg){
return new Result(code,msg,null);
}
到这里我们就可以统一返回值类型,不需要再考虑各种返回值类型,直接点【统一】
自定义异常
为了项目更加完整,所有最好定一个异常类,对一些可以发生异常的逻辑及时捕捉给予处理
定义
随便定义一个类,然后继承RuntimeException,
public class CustomException extends RuntimeException{
// 返回的状态码
private String code;
public CustomException(String code,String msg){
super(msg);
this.code = code;
}
public String getCode() {
return code;
}
}
全局异常处理
@ControllerAdvice
public class GlobalExceptionHandler {
@ResponseBody
@ExceptionHandler(CustomException.class)
public Result handle(CustomException customException) {
// 抛出异常时返回的信息
return Result.error(customException.getCode(),customException.getMessage());
}
}
@ControllerAdvice注解
对于@ControllerAdvice拆解出来就是 Controller Adivide,关于Adivide,他和spring中的Aop相似,用于切入点和需要织入的切面,也就是用于对 Controller 进行切面环绕,但是具体的业务织入方式则是通过结合其他的注解来实现的。
注解在类上,主要目的是:
结合方法型注解:@ExceptionHandler,用于捕捉Controller中抛出的指定异常类型,从而达到不同的异常类型,不同的处理方式
示例
更多推荐
已为社区贡献3条内容
所有评论(0)