开发者

SpringBoot捕获feign抛出异常的方法

目录
  • 前言
  • feign异常全局捕获
    • 定义一个异常类
    • 捕获feign请求异常
  • 总结

    前言

    使用Springboot时,使用feign客户端作为http请求工具时,当接口抛出异常信息时,使用全局异常是捕获不了异常的

    feign异常全局捕获

    定义一个异常类

    @Getter
    public class BusinessException extends RuntimeException {
    
        private String message;
    
        private int code;
    
        public BusinessException(编程客栈String message, int code) {
            this.message = message;编程客栈
            this.code = code;
        }
    
        public BusinessException(String message) {
            super(message);
            this.message = message;
        }
    
    
    
    }
    

    捕获feign请求异编程

    @Slf4j
    @Configuration
    public class FeignExceptionConfig {
    
        @Bean
        public ErrorDecoder feignError() {
            return (key, response) -> {
                if (response.status() != HttpStatus.OK.value()) {
                    try {
                        String data = IOUtils.toString(response.body().asInputStream());
                        log.error("feign请求错误,返回值为:{{}}", data);
                        throw new BusinessException(data);
                    } catch (BusinessException e) {
                        throw e;
                    } catch (Exception e) {
                        log.error("异常信息为:", e);
                        throw new RuntimeException(e);
                    }
                }
    
                // 其他异javascript常交给Default去解码处理
                // 这里使用单例即可,Default不用每次都去new
                return new ErrorDecoder.Default().decode(key, response);
            };
        }
    
    }
    

    或者在全局异常捕获加上这个

    @ExceptionHandler(FeignException.class)
    @ResponseStatus(HttpStatus.BAD_REQUEST)
    public Stjsring handleFeignException(FeignException ex) {
        log.error("feign异常处理信息", ex);
        return ex.contentUTF8();
    }
    

    总结

    feign客户端是一个强大的请求工具,但是异常处理有时候得额外处理

    到此这篇关于SpringBoot捕获feign抛出异常的方法的文章就介绍到这了,更多相关SpringBoot捕获feign异常内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!

    0

    上一篇:

    下一篇:

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    最新开发

    开发排行榜