全局异常处理

软件开发过程中,不可避免的是需要处理各种异常,常见的形式就是逐层向上抛出,web层进行处理。使用try {…} catch {…}很方便就能对异常做到业务处理
解决方案:

  1. 冗余代码多,影响代码可读性
  2. 异常处理和业务代码耦合
    SpringMVC提供了一套解决全局异常的处理方案,可以在代码无侵入的前提下完成异常处理。遵循逐层抛出,异常处理器统一处理的思路
    在这里插入图片描述
    项目中可能存在不可预知的各种异常,如:空指针,数组越界等。针对这类异常,可以直接在异常处理器中统一处理;

还有一类是可预知的错误,如图片不合法,验证码错误等等。这类错误也可以理解为业务异常,可以通过自定义异常类来处理;

1.配置异常处理器

枚举类,ErrorCode地址:https://blog.csdn.net/apple_69693064/article/details/126916672

@RestControllerAdvice
public class GloableExceptionHandler {
    /*/**
     *全局异常处理: 当controller方法出现异常时,自动进入异常处理器的指定方法中
     *要求:返回值 和controller方法一致
     *参数:controller中异常对象
     *在方法上配置一个注解:
     *通过此注解  指定进入次方法的异常类型
     */

    //全局异常
    @ExceptionHandler(RuntimeException.class)
    public ResponseResult exception(Exception e) {
        e.printStackTrace();//打印堆栈
        ErrorCode code = ErrorCode.ERROR;
        return ResponseResult.errorResult(code);
    }

    //处理业务异常
    @ExceptionHandler(BusinessException.class)
    public ResponseResult businessException(BusinessException e) {
        e.printStackTrace();//打印堆栈
        ErrorCode code = e.getErrorCode();
        return ResponseResult.errorResult(code);
    }
}
   

2.定义业务异常类

//自定义异常
@Data
public class BusinessException extends RuntimeException {

    //参数  错误信息错误码
    private ErrorCode errorCode;

    public BusinessException(ErrorCode errorCode) {
        this.errorCode = errorCode;
    }
}

依赖:


<dependencies>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-openfeign</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <scope>provided</scope>
    </dependency>

    <dependency>
        <groupId>com.xuecheng</groupId>
        <artifactId>xc-framework-commons</artifactId>
        <version>1.0-SNAPSHOT</version>
    </dependency>
</dependencies>

注意:1.微服务中需要引导类中需要指定包扫描
2.每个微服务模块中需要引入其依赖

//如果默认手动指定扫描的包 默认扫描包的规则则失效
@ComponentScan(
basePackages =
{
..web”,
..system”,
}
)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

上官玺

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值