Как повторить попытку открытия файла свойств в Java - PullRequest
2 голосов
/ 26 апреля 2010

Я пытаюсь обработать FileNotFoundException в Java, приостановив поток на x секунд и перечитав файл. Идея заключается в том, чтобы редактировать свойства во время выполнения.

Проблема в том, что программа просто завершается. Есть идеи, как реализовать это решение?

Ответы [ 4 ]

3 голосов
/ 26 апреля 2010

Есть старый добрый рецепт, изначально разработанный Бьярном Страуструпом для C ++, перенесенный сюда на 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
    }
  }
}
1 голос
/ 26 апреля 2010

Выполните загрузку файла в цикле и установите переменную, от которой зависит условие после успешного чтения файла. Используйте блок try-catch внутри цикла и выполните ожидание в блоке catch.

0 голосов
/ 26 апреля 2010

Некоторые фрагменты кода могут быть полезны, но одной из следующих может быть проблема:

  • Ваш код успешно перехватывает первое исключение FileNotFoundException, но после пробуждения код не может успешно обработать второе
  • Еще одно исключение, которое не обрабатывается. Попробуйте временно обернуть соответствующий код в catch (Exception e), чтобы увидеть, какое исключение выдается
  • Программа, которую вы используете для редактирования файла, блокирует файл свойств и, возможно, запрещает доступ через ваш код Java.

Удачи

0 голосов
/ 26 апреля 2010

Если исключение не перехватывается, поток прерывается Если это ваш основной поток, приложение заканчивается. Попробуйте следующее:

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