SpringBoot捕获feign抛出异常的方法,
分享于 点击 14619 次 点评:83
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); } } // 其他异常交给Default去解码处理 // 这里使用单例即可,Default不用每次都去new return new ErrorDecoder.Default().decode(key, response); }; } }
或者在全局异常捕获加上这个
@ExceptionHandler(FeignException.class) @ResponseStatus(HttpStatus.BAD_REQUEST) public String handleFeignException(FeignException ex) { log.error("feign异常处理信息", ex); return ex.contentUTF8(); }
总结
feign客户端是一个强大的请求工具,但是异常处理有时候得额外处理
到此这篇关于SpringBoot捕获feign抛出异常的方法的文章就介绍到这了,更多相关SpringBoot捕获feign异常内容请搜索3672js教程以前的文章或继续浏览下面的相关文章希望大家以后多多支持3672js教程!
您可能感兴趣的文章:- Springboot集成OpenFeign Demo详解
- springboot集成Feign的实现示例
- SpringBoot项目中feignClient使用方式
- SpringBoot中的@FeignClient注解使用
- SpringBoot中@FeignClient 注解的作用
用户点评