gpt4 book ai didi

java - 记录通过输入流的所有内容

转载 作者:太空宇宙 更新时间:2023-11-04 11:40:02 25 4
gpt4 key购买 nike

我正在使用 Gson 来处理 Json 响应。有时我会遇到异常,但不幸的是我没有获得足够的上下文来查明问题的确切位置。

JsonReader 创建如下:

private JsonReader getJsonReader(final HttpEntity entity) throws IOException {
final InputStreamReader reader = new InputStreamReader(entity.getContent(), StandardCharsets.UTF_8);
return new JsonReader(reader);
}

我的想法是子类化 InputStreamReader 并记录通过它的所有内容,以便在引发异常时获得更多上下文。

有更好的方法吗?

最佳答案

我创建了以下两个子类:

public class LoggingReader extends InputStreamReader {

private char[] lastRead;

public LoggingReader(final InputStream inputStream, final Charset charset) {
super(inputStream, charset);
}

@Override
public int read(final char[] chars, final int i, final int i1) throws IOException {
final int result = super.read(chars, i, i1);
lastRead = chars;
return result;
}

public String getLastRead() {
return new String(lastRead);
}
}

public class LoggingJsonReader extends JsonReader {
private final LoggingReader reader;
public LoggingJsonReader(final LoggingReader in) {
super(in);
this.reader = in;
}

public String getLastRead() {
return reader.getLastRead();
}
}

现在,当抛出异常时,我会:

catch (Exception ex) {
if (reader instanceof LoggingJsonReader) {
LoggingJsonReader lReader = (LoggingJsonReader) reader;
log.error(lReader.getLastRead());
}

关于java - 记录通过输入流的所有内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42907781/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com