Springboot通过@ControllerAdvice实现简单的全局统一异常处理

       当我们的业务层出现异常,后台报错而没有给前端合理的响应,这种情况是肯定不能出现的,但是我们也不能每个接口都try/catch一遍,自己处理异常。我们可以通过SpringMVC提供的@ControllerAdvice注解来进行简单的全局统一异常处理。

//api下包含了controller和service和mapper
@ControllerAdvice(basePackages = "com.winner.api")
public class ExceptionHandleController {

    private final static Logger logger = LoggerFactory.getLogger(ExceptionHandleController.class);

    /**
     * @description: 异常处理
     * @param e
     * @return: AjaxResponse 自定义响应体
     */
    @ExceptionHandler(value = Exception.class)  //处理所有异常
    @ResponseBody
    public AjaxResponse errorResult(Exception e) {
        logger.error("程序发生异常,异常原因:" + e.toString());
        if (e instanceof MethodArgumentTypeMismatchException) {
            return AjaxResponse.newInstance(10001, "参数错误,请检查参数");
        }
        return AjaxResponse.newInstance(500, e.toString());
    }
}

       当然,以上处理还比较粗暴简单,所有的Exception都走这个,这是懒省事的写法。我们应该自定义异常和错误码,尽量返回给前端更准确易懂的信息。

@RestControllerAdvice = @ControllerAdvice + @ResponseBody
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值