gpt4 book ai didi

Java 在 IOException 之后重试

转载 作者:行者123 更新时间:2023-11-29 09:30:50 27 4
gpt4 key购买 nike

如果我有流,我预计有时会抛出 IOException,并且想要捕获异常并重试流的位置(即标记是否仍然在最后一个成功读取的 block 之后/字节)?我只是捕获异常并执行相同的 read(byte[]) 并期望我不会丢失数据?谢谢。

最佳答案

您可以尝试使用来自 jcabi-aspectsmark()/reset() 方法、AOP 和 Java 注释(我是一名开发人员)。读取的函数将如下所示(伪代码):

@RetryOnFailure(attempts = 5)
private byte[] read(InputStream stream, int length) {
stream.reset();
byte[] bytes = new byte[length];
stream.read(bytes, 0, length);
stream.mark(length);
return bytes;
}

如果在 stream.read(bytes, 0, length) 处抛出 IOException,则不会调用 mark() 并且下一次调用 reset() 会将指针设置到之前的位置。

关于Java 在 IOException 之后重试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12395004/

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