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?

È stato utile?

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(...);
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top