SpringBoot全局异常处理

一、try/catch异常处理的缺陷

在开发SpringBoot应用时,往往会遇到以下情景:在某个接口中,存在一些可能的异常。比如url参数错误、用户账号和密码错误等。这时我们可以在发生异常的地方抛出我们自定义的异常,并对异常进行处理,就像下面这样:

  @RequestMapping("/test")
    public BosCommonResponse test() {
        try {
            //业务代码
            throw new BadRequestParameterException();
        }catch(BadRequestParameterException e) {
            //异常处理
        }
        return new BosCommonResponse();
    }

然而,这么做的问题是,对于每一种异常,我们都需要编写try/catch语句进行处理。代码因此变的冗长,而且一旦需要修改某种异常,则所有使用了该异常的接口都需要修改。

二、引入全局异常处理

为了解决这一问题,Spring3.2中新增了@ControllerAdvice注解,可以通过该注解配置一个全局异常处理类,它能统一处理Controller中抛出的异常而不需要书写try/catch语句。

三、全局异常处理的使用

1、自定义异常类

public class BadRequestParameterException extends RuntimeException {
    public BadRequestParameterException() {
        
    }
    public BadRequestParameterException(String msg) {
        super(msg);
    }
}

注意:自定义异常类必须继承自RuntimeException才可以

2、配置全局异常处理类

@ControllerAdvice
public class GlobalExceptionHandler {
    /**
     * 处理BadRequestParameterException异常
     * */
    @ExceptionHandler(value = BadRequestParameterException.class)
    public BosCommonResponse badRequestParameterException(HttpServletRequest req, BadRequestParameterException e) {
        return new BosCommonResponse();
    }
}

3、Controller中遇到异常直接抛出即可

throw new BadRequestParameterException()

 

转载于:https://www.cnblogs.com/SChenqi/p/10518468.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值