質問

私は扱おうとしています FileNotFoundException Javaでは、スレッドをx秒間一時停止し、ファイルを読み直します。この背後にあるアイデアは、ランタイム中にプロパティを編集することです。

問題は、プログラムが単純に終了することです。このソリューションを実現する方法はありますか?

役に立ちましたか?

解決

ファイルがループで読み込まれ、ファイルが正常に読み取られた後に条件が依存する変数を設定します。ループ内のトライキャッチブロックを使用して、キャッチブロックで待機します。

他のヒント

ここでJavaに移植されたC ++のBjarne Stroustroupによる古き良きレシピがあります。

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つが問題になる可能性があります。

  • あなたのコードは最初のfilenotFoundExceptionを正常にキャッチしますが、目を覚ました後、コードは2番目のものを正常に処理しません
  • 別の例外は、処理されていないスローされることです。問題のコードを一時的にラップしてみてください catch (Exception e) どの例外がスローされているかを確認します
  • ファイルの編集に使用するプログラムは、プロパティファイルを「ロック」し、Javaコードによるアクセスを妨げることです。

幸運を

例外がキャッチされない場合、スレッドは終了します。これがメインスレッドの場合、アプリケーションは終了します。以下を試してください:

try
{
   props.load(...);
}
catch (FileNotFoundException ex)
{
   Thread.sleep(x * 1000);
   props.load(...);
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top