J'ai du code qui se connecte à une URL pour télécharger un fichier, puis effectue un traitement dessus. Cependant, parfois, je reçois l'erreur java.net.SocketException: Connection reset
.Exceptions, et comment réessayer quand une connexion est réinitialisée?
Je voudrais réessayer de télécharger le fichier lorsque je reçois cette erreur, disons un maximum de 3 fois avant d'abandonner. Je voudrais savoir quelle serait la meilleure façon de structurer cela.
Est-ce que ce qui suit semble correct? Est-il acceptable de placer le bloc try-catch
à l'intérieur d'une boucle while
, ou y a-t-il une meilleure approche?
Toute l'aide est très appréciée!
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);
}
}
Alors, est-ce que quelque chose comme ça serait correct, ou une mauvaise façon de gérer les choses? catch (IOException e) { Logger.batchLog (e); if (tentatives == 0) { lancer e; } } – QuakerOat
Yea. Cela devrait être bon. Ou au lieu de lancer, vous pouvez terminer et dire à l'utilisateur que le serveur n'est pas disponible. Quelle que soit la façon dont vous le gérez, vous ne devriez pas manger l'exception comme si rien ne s'était passé. Ce que je ne pense pas que vous avez un problème avec maintenant. En outre, vous voulez attraper java.net.SocketException et pas toutes les IOExceptions, car c'est la seule chose que vous savez comment (ou vouloir) gérer. – shoebox639