2010-04-26 7 views
2

J'essaie de gérer un FileNotFoundException en Java en interrompant le thread pendant x secondes et en relisant le fichier. L'idée derrière ceci est d'éditer des propriétés pendant l'exécution.Comment réessayer d'ouvrir un fichier de propriétés en Java

Le problème est que le programme se termine simplement. Une idée de comment réaliser cette solution?

Répondre

1

Effectuez le chargement du fichier dans une boucle et définissez la variable dont dépend la condition après la lecture du fichier. Utilisez un bloc try-catch à l'intérieur de la boucle et faites l'attente dans le catch-block.

+0

merci Joachim, cela devrait faire l'affaire :) si évident que je devrais obtenir ma tête ... vérifié – Hoggy

-2

Si l'exception n'est jamais détectée, le thread est terminé. Si c'est votre fil principal, l'application se termine. Effectuez les opérations suivantes:

try 
{ 
    props.load(...); 
} 
catch (FileNotFoundException ex) 
{ 
    Thread.sleep(x * 1000); 
    props.load(...); 
} 
+0

Ce retente une seule fois, et si je comprends bien, l'idée est de réessayer jusqu'au succès. –

+0

Oui, une boucle que vous avez fournie dans votre réponse est une meilleure solution. Ma réponse répond essentiellement à la question. – Mnementh

3

Il y a une recette de bonne vieille, à l'origine par Bjarne Stroustrup C++, porté ici à 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 
    } 
    } 
} 
+0

'return return' n'est pas valide pour les méthodes de type' void'. –

+0

Ceci est pseudo-code, et pourtant, je suis corrigé. –

0

Quelques extraits de code seraient utiles, mais l'un des éléments suivants pourraient le problème:

  • Votre code capture avec succès le premier FileNotFoundException mais après le réveil le code ne gère pas correctement une seconde
  • Une autre exception est levée qui n'est pas gérée. Essayez d'envelopper temporairement le code en question avec un catch (Exception e) pour voir quelle exception est levée
  • Le programme que vous utilisez pour éditer le fichier est en train de 'verrouiller' le fichier de propriétés et empêche potentiellement l'accès par votre code Java.

Bonne chance