微服务异常处理的几种方法

创建全局异常处理器

@RestControllerAdvice   //声明当前这个类是全局异常处理器
public class GlobalExceptionHandler {

    /**
     * @ExceptionHandler指定当前这个方法就是一个异常处理方法,并且指定当前方法可以处理的异常类型
     * @param e
     * @return
     */
    @ExceptionHandler(value = GmallException.class)
    public Result gmallExceptionHandler(GmallException e){
        e.printStackTrace();
        ResultCodeEnum resultCodeEnum = e.getResultCodeEnum();
        return Result.build(null, resultCodeEnum);
    }

    /**
     * 处理非业务异常
     * @param e
     * @return
     */
    @ExceptionHandler(value = Exception.class )
    public Result systemExceptionHandler(Exception e){
        e.printStackTrace();
        return Result.build(null, ResultCodeEnum.SYSTEM_EXCEPTION);
    }
}

方法一:使用@ComponentScan注解

@ComponentScan(basePackages = "全局异常处理器所在的包路径")
注:@SpringBootApplication注解中有默认的@ComponentScan,再添加@ComponentScan会覆盖默认的包扫描路径,全局异常处理器所在的包路径必须和启动类所在的包路径一致,否则扫描不到
解决办法:调大包扫描的范围

方法二:使用@Import注解

@Import(value = GlobalExceptionHandler.class)
注:使用这个注解必须知道全局异常处理类的类名称

方法三:使用自定义注解

@Target(value = ElementType.TYPE)               //自定义注解使用位置为类
@Retention(value = RetentionPolicy.RUNTIME)     //生效时期
@Import(value = GlobalExceptionHandler.class)
public @interface EnableGlobalExceptionHandler {
}

方法四:使用Spring Boot的自动化配置

  1. 在全局异常处理器所在的项目resources资源目录下创建META-INF文件夹,在该文件夹下创建spring.factories文件,在文件中添加以下内容:
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\要实现自动化配置的类的全类名
posted @ 2023-06-30 17:25  摆烂ing  阅读(500)  评论(0)    收藏  举报