Spring Boot使用公共异常处理类处理异常

一、引言

我们在做后端开发的时候,程序可能会出现各种运行时异常,当用户请求接口之后,会将异常赤裸裸地展示在页面上,使得用户体验极差,那么一个集中的处理异常的类就显得尤为重要。集中处理异常可以使代码容易维护,减少代码的冗余。

二、处理异常步骤

  1. 创建一个Result类,用于封装返回的数据
public class Result {
    /**
     * 请求是否成功
     */
    private Boolean flag;
    /**
     * 响应状态码
     */
    private Integer code;
    /**
     * 提示信息
     */
    private String message;
    /**
     * 返回数据
     */
    private Object data;
    //getter setter
    }
  1. 创建一个BaseExceptionHandler类,用于处理异常
@ControllerAdvice
public class BaseExceptionHandler {
private Logger logger = LoggerFactory.getLogger(this.getClass());
	
    @ExceptionHandler(Exception.class)
    @ResponseBody
    public Result handler(Exception e){
        logger.error(e.getMessage(),e);
        return new Result(false, 500,"服务器内部错误");
    }
}

此时如果接口出现异常,则会返回友好的提示语。

三、扩展

有时候由于业务的需要,我们需要自定义异常,当抛出自定义异常后,就执行某些操作。

  1. 先创建一个自定义异常类,继承RuntimeException,直接继承父类的构造方法
public class ServiceException extends RuntimeException{

    public ServiceException() {
    }

    public ServiceException(String message) {
        super(message);
    }
}
  1. 在原有的异常处理类上针对这一异常作处理
@ControllerAdvice
public class BaseExceptionHandler {
private Logger logger = LoggerFactory.getLogger(this.getClass());

    @ExceptionHandler(Exception.class)
    @ResponseBody
    public Result handler(Exception e){
        if(e instanceof ServiceException){
        	//处理的业务逻辑
            return new Result(false,400,e.getMessage());
        }
        logger.error(e.getMessage(),e);
        return new Result(false, 500,"服务器内部错误");
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值