SpringClound全局异常处理

SpringClound全局异常处理

在搭建SpringClound处理异常时,走了不少弯路,目前在zuul网关定义了异常捕获,其它的子项目直接引入即可,这样处理起来自己认为是最简单的做法:

一、项目结构如下:
在这里插入图片描述

二、在zuul服务中,用@ControllerAdvice和@ExceptionHandler(value = Exception.class)注解使用。

@ControllerAdvice
@Slf4j
public class ExceptionError {
    @ExceptionHandler(value = Exception.class)
    @ResponseBody
    public Result defaultErrorHandler(HttpServletRequest req, HttpServletResponse resp, Exception e) {
        e.printStackTrace();
        Result resul = new Result();
        if (e instanceof HttpRequestMethodNotSupportedException) {
            resul.setResltInfo(Constant.CODE_TYPE_10, "非法请求", e.getMessage());
        } else if (e instanceof HystrixRuntimeException) {
            resul.setResltInfo(Constant.CODE_TYPE_30, "feign调用系统异常", e.getCause().getMessage());
        } else {
            resul.setResltInfo(Constant.CODE_TYPE_1, "系统异常", e.getMessage());
        }
        return resul;
    }
}

三、在其它子项目中:如server-a\server-c出现异常,网关中的ExceptionError这个类会自动捕获到,在server-a\server-c中的pom文件中引入zuul,不然不会生效。

	<dependency>
        <groupId>com.example</groupId>
        <artifactId>zuul</artifactId>
        <version>1.0-SNAPSHOT</version>
    </dependency>

四、如果第三步配置还是不生效的话,在server-a\server-c启动类上加上scanBasePackages = “com.example”

	@SpringBootApplication(scanBasePackages = "com.example")
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值