Openfeign ErrorDecoder 导致 java.io.IOException:流已关闭

2024-03-28

当我尝试实施时ErrorDecoder为了解码假装异常,我在中找到了流response.body()已关闭,因此当我尝试读取流并将其转换为字符串时,它会抛出java.io.IOException: stream is closed。这真的很困惑,因为在解码器之前,我没有做任何事情来关闭高级流。

public class FeignClientErrorDecoder implements ErrorDecoder {
    @Override
    public Exception decode(String methodKey, Response response) {
        log.info("feign client response: {}", response);
        String body = null;
        try {
            body = Util.toString(response.body().asReader(Charset.defaultCharset()));
        } catch (IOException e) {
            log.error("feign.IOException", e);
        }
        return new ServiceException(MessageCode.builder(ExceptionCodeEnum.ERROR));
    }
}

我经历了这场噩梦,这都是 IDE 的错。

调试模式下的断点在结束/之前response.body().asReader导致流关闭。

简单地在阅读正文后开始调试,一切都很顺利。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Openfeign ErrorDecoder 导致 java.io.IOException:流已关闭 的相关文章

随机推荐