SpringBoot配置全局try catch处理,自定义结果返回类

SpringBoot配置全局try catch处理

参考博客链接

1、先上效果

1.1、Controller层

在这里插入图片描述

1.2、发请求的效果

对应controller层的第一个接口
在这里插入图片描述
对应controller层的第二个接口
在这里插入图片描述
对应controller层的第三个接口
在这里插入图片描述

2、废话不多说,直接上步骤

2.1、项目结构

在这里插入图片描述

2.2、相关代码

2.2.1 BusinessException.java

这个是自己定义的异常处理,这里面的属性主要根据你自己返回的数据需要而定义的,我这里只需要一个message,所以这个自定义的异常类,只有一个errorMessage属性

public class BusinessException extends RuntimeException  {
    private static final long serialVersionUID = -4879677283847539655L;

    private String errorMessage;

    public BusinessException(String errorMessage) {
        super();
        this.errorMessage = errorMessage;
    }

    public String getErrorMessage() {
        return errorMessage;
    }

    public void setErrorMessage(String errorMessage) {
        this.errorMessage = errorMessage;
    }
}

2.2.2、GlobalExceptionHandle.java

这里是重点:这里是存放各种错误所返回的数据

@ControllerAdvice
public class GlobalExceptionHandler {

    /**
     * 处理自定义的业务异常,自己传一个错误信息进来
     * @param req
     * @param e
     * @return
     */
    @ExceptionHandler(value = BusinessException.class)
    @ResponseBody
    public Result bizExceptionHandler(HttpServletRequest req, BusinessException e){
        System.err.println("未知异常!原因是:"+e.getErrorMessage());
        return new ReturnUtil<>().getFail(e.getErrorMessage());
    }

    /**
     * 处理空指针的异常
     * @param req
     * @param e
     * @return
     */
    @ExceptionHandler(value = NullPointerException.class)
    @ResponseBody
    public Result exceptionHandler(HttpServletRequest req, NullPointerException e){
        System.err.println("未知异常!原因是:"+e);
        return new ReturnUtil<>().getFail("数据格式不正确,造成空指针错误");
    }

    /**
     * 处理其他异常,服务器内部错误
     * @param req
     * @param e
     * @return
     */
    @ExceptionHandler(value = Exception.class)
    @ResponseBody
    public Result exceptionHandler(HttpServletRequest req, Exception e){
        System.err.println("未知异常!原因是:"+e);
        return new ReturnUtil<>().getFail("未知错误,请联系管理员");
    }

}

2.2.3、ConstValue.java

这里主要用于存放自定义的常量

public class ConstValue {

    /** 请求成功的返回码 */
    public final static Integer SUCCESS_CODE = 200;

    /** 请求失败的返回码 */
    public final static Integer FAIL_CODE = 201;

    /** 获取成功信息 */
    public final static String SUCCESS_MSG = "获取成功";

    /** 获取失败信息 */
    public final static String FAIL_MSG = "获取失败";

}

2.2.4、Result.java,自定义结果返回类

这个是我自己定义的结果返回类型,我主要是有一个
code,用于存放返回码,我自己设置的是为200表示成功,为201表示失败,
data,用于存放返回给前端的数据,
msg,用于存放一个附带的信息字符串

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Result<T> implements Serializable {
    int code;
    T data;
    String msg;
    private static final long serialVersionUID = 1L;
}

2.2.5、ReturnUtil.java,自定义结果返回类

这个是方便返回的时候使用的结果工具类

public class ReturnUtil<T> {

    /**
     * 获取数据成功,同时返回自己传的data和msg
     * @param data 数据
     * @param msg 提示信息
     * @return 结果
     */
    public Result<T> getOk(T data, String msg){
        return new Result<>(ConstValue.SUCCESS_CODE, data, msg);
    }

    /**
     * 获取数据成功,只传data,msg都是成功
     * @param data 数据
     * @return 结果
     */
    public Result<T> getOk(T data){
        return new Result<>(ConstValue.SUCCESS_CODE, data, ConstValue.SUCCESS_MSG);
    }

    /**
     * 获取数据失败,同时返回自己传的msg
     * @param msg 提示信息
     * @return 结果
     */
    public Result<T> getFail(String msg){
        return new Result<>(ConstValue.FAIL_CODE, null, msg);
    }

    /**
     * 获取数据失败
     * @return 结果
     */
    public Result<T> getFail(){
        return new Result<>(ConstValue.FAIL_CODE, null, ConstValue.FAIL_MSG);
    }


}

如果觉得有用,各位观众老爷点个赞再走哈~谢谢(其实再加个关注也不介意哈哈哈)

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值