Come riprovare l'apertura di un file delle proprietà in Java
-
01-10-2019 - |
Domanda
Sto cercando di gestire un FileNotFoundException
in Java sospendendo il filo per x secondi e rileggere il file. L'idea alla base di questo è quello di modificare le proprietà in fase di esecuzione.
Il problema è che il programma termina semplicemente. Qualsiasi idea di come realizzare questa soluzione?
Soluzione
Fare il file di carico in un ciclo e impostare la variabile della condizione dipende dopo che il file è stato letto con successo. Utilizzare un blocco try-catch all'interno del ciclo e fare l'attesa nel catch-blocco.
Altri suggerimenti
C'è una ricetta buon vecchio, in origine da Bjarne Stroustrup per C ++, porting qui per Java:
Result tryOpenFile(File f) {
while (true) {
try {
// try to open the file
return result; // or break
} catch (FileNotFoundException e) {
// try to recover, wait, whatever
}
}
}
Alcuni frammenti di codice sarebbe utile, ma una delle seguenti potrebbe essere il problema:
- il codice cattura con successo la prima FileNotFoundException ma dopo il risveglio il codice non gestisce con successo un secondo
- Un discorso a parte viene gettata che non è gestita. Provare avvolgendo temporaneamente il codice in questione con un
catch (Exception e)
per vedere ciò che viene gettata un'eccezione - Il programma utilizzato per modificare il file 'chiudendo' il file di proprietà e possbily impedendo l'accesso dal codice Java.
In bocca al lupo
Se l'eccezione è mai catturato, il thread è terminato. Se questo è il tuo thread principale, l'applicazione si conclude. Provare quanto segue:
try
{
props.load(...);
}
catch (FileNotFoundException ex)
{
Thread.sleep(x * 1000);
props.load(...);
}