微服务异常处理的几种方法
创建全局异常处理器
@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的自动化配置
- 在全局异常处理器所在的项目resources资源目录下创建META-INF文件夹,在该文件夹下创建spring.factories文件,在文件中添加以下内容:
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\要实现自动化配置的类的全类名
作者:摆烂ing
出处:http://www.cnblogs.com/insilently/
版权:本文版权归作者所有
转载:欢迎转载,但未经作者同意,必须保留此段声明;必须在文章中给出原文连接;否则必追究法律责任
出处:http://www.cnblogs.com/insilently/
版权:本文版权归作者所有
转载:欢迎转载,但未经作者同意,必须保留此段声明;必须在文章中给出原文连接;否则必追究法律责任

浙公网安备 33010602011771号