定期的に監視するなら、10回もリトライは要りません。ポーリングの度に全てのファイルを1回試す、としておけばいいと思いますよ。壊れたファイルはいつまでも登録されないのですから、問題ありません。リトライのコードを書くとそこでもまたバグが発生する可能性があります。ファイルのコピー・削除を行うなら、「移動」にすべきです。これならアトミック性が保証されています。読み込みでも敢えて「排他ロック」を使うと、他のプロセス、スレッドからファイルが使われるのを防げます。DB登録も、誤って2重に登録しないようにしておくべきです。間違った発想で例外処理を始めてしまうとすごく大変です。・例外処理が絡んでたりネストしてるのはダメな可能性が多い。・単純な処理のはずなのにコードが多いのはダメな可能性が多い。・マルチスレッドのはずなのにコードが少なすぎるのもダメな場合が多い。・テンポラリファイルとかは要らない場合が多いこんなのを私は意識してる気がします。この辺がうまくできる人がいいプログラマだと思ってます。