我有一些代码连接到一个URL来下载文件,然后对它执行一些处理。但是,有时我收到错误java.net.SocketException: Connection reset
。异常情况以及重置连接时如何重试?
我想重新下载文件,当我收到这个错误,说最多3次放弃之前。我想知道什么是构建这个最好的方法。
以下看起来不错。将try-catch
块放在while
循环内似乎是可以接受的,或者有更好的方法吗?
所有帮助非常感谢!
while(!connected && retries > 0) {
retries--;
URL downloadUrl;
URLConnection conn;
try {
downloadUrl = new URL(url);
conn = downloadUrl.openConnection();
conn.connect();
connected = true;
// Perform processing on downloaded file here
} catch (IOException e) {
Logger.batchLog(e);
}
}
那么这样的事情会好吗,还是处理事情的坏方法? catch(IOException e){ Logger.batchLog(e); (重试== 0){ throw e; } } – QuakerOat 2010-11-16 20:45:53
是的。这应该是好的。或者,您可以终止并告诉用户服务器不可用,而不是抛出。但是,如果你处理它,你就不应该像发生任何事情一样吃掉异常。我认为你现在没有问题。此外,你只想捕获java.net.SocketException,而不是所有的IOExceptions,因为这是你知道如何处理的唯一的东西。 – shoebox639 2010-11-16 22:58:19