SpringBoot项目全局异常处理

如果希望在程序执行出现错误的时候,不是直接返回前端一个500错误,导致前端什么也获取不到;

可以使用全局异常处理来解决。

使用@ControllerAdvice注解来实现

1.在项目中直接添加一个异常类就可以了,不需要再做其他操作

这个时候方法再由异常,就会调用该方法

/**
 * 全局异常处理类
 */
@ControllerAdvice
public class GlobalExceptionHandler {

    /**
     * 默认调用该方法
     * @param e
     * @return
     */
    @ExceptionHandler(Exception.class)
    @ResponseBody
    public Result error(Exception e) {
        e.printStackTrace();
        return Result.fail();
    }
}

2.如果希望使用项目中自己实现的异常,可以通过下面方式

第一步:在上面的全部异常处理类中新增一个自己实现异常的方法

  /**
     * 当抛出YyghException时,调用该方法
     * @param e
     * @return
     */
    @ExceptionHandler(YyghException.class)
    @ResponseBody
    public Result error(YyghException e) {
        e.printStackTrace();
        return Result.fail();
    }

第二步:在controller使用try…catch…抛出自己实现的异常

一般在实际开发中,都会使用try…catch…来包裹调用业务层的代码,这样出现异常时,就会调用自己定义的异常

 try {
            int i = 1 / 0;
        } catch (Exception e) {
            throw new YyghException("失败", 201);
        }

3.@ControllerAdvice注解简介

@ControllerAdvice 既可以在传统的 SSM 项目中使用,也可以在 Spring Boot + Spring Cloud 微服务中使用

使用这个 Controller ,可以实现三个方面的功能:
全局异常处理:不再介绍
全局数据绑定:全局数据绑定功能可以用来做一些初始化的数据操作,我们可以将一些公共的数据定义在添加了 @ControllerAdvice 注解的类中,这样,在每一个 Controller 的接口中,就都能够访问导致这些数据。
全局数据预处理:对前端传递的数据做一些预处理

参考:

https://www.bilibili.com/video/BV1V5411K7rT?p=23

https://www.cnblogs.com/lenve/p/10748453.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值