Ho un codice che si collega a un URL per scaricare un file e quindi esegue alcune elaborazioni su di esso. Tuttavia, a volte ricevo l'errore java.net.SocketException: Connection reset
.Eccezioni e il modo migliore per riprovare quando viene ripristinata una connessione?
Vorrei riprovare a scaricare il file quando si riceve questo errore, ad esempio un massimo di 3 volte prima di rinunciare. Mi piacerebbe sapere quale sarebbe il modo migliore per strutturarlo.
Il seguente aspetto è corretto. Appare accettabile inserire il blocco try-catch
all'interno di un ciclo oppure esiste un approccio migliore?
Tutto l'aiuto è molto apprezzato!
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);
}
}
Quindi una cosa del genere andrebbe bene, o un pessimo modo di gestire le cose? catch (IOException e) { Logger.batchLog (e); if (retries == 0) { throw e; } } – QuakerOat
Sì. Dovrebbe essere buono O invece di lanciare, puoi terminare e dire all'utente che il server non è disponibile. Comunque lo gestisci, non dovresti solo mangiare l'eccezione come se nulla fosse accaduto. Quale non penso che abbiate un problema con ora. Inoltre, si desidera catturare SOLO java.net.SocketException e non tutte le IOException, in quanto è l'unica cosa che si sa come (o vuoi) gestire. – shoebox639