http://kimoto.hatenablog.com/entry/2012/03/05/103052 を読んでたら
Ruby の retry-handler が激しく便利そうなので Java で実装してみた。
ソース→ https://github.com/yoshiori/retry-handler
どんなものか簡単に説明すると
特定の処理を実行したいんだけど、途中で何らかのエラーが発生した場合はリトライさせたい時に使えます。
具体的にはこんな感じで書くと、処理の途中でエラーが発生しても指定した回数はリトライしてくれます。
Proc.retry(3,new Runnable() { @Override public void run() { //なんか処理 } });
特定のエラーの時だけリトライしたい時はそれも指定できます。
例えば IOException とそのサブクラスのエラーの時のみリトライさせたい場合はこんな感じ
Proc.retry(3,new Runnable() { @Override public void run() { //なんか処理 } }, IOException.class);
処理をリトライするときに wait を入れることもできます。
例えば 5 秒置いてからリトライさせたい場合はこんな感じ
Proc.retry(3,new Runnable() { @Override public void run() { //なんか処理 } }, 5 * 1000);
もちろん、上記を複合で指定することも可能です。
例えば IOException とそのサブクラスのエラーの時のみ 5 秒置いてからリトライさせたい場合はこんな感じ
Proc.retry(3,new Runnable() { @Override public void run() { //なんか処理 } }, 5 * 1000, IOException.class);
とりあえず使い方はテスト見ればわかると思うので適当にどうぞ
よく考えると俺、こういう処理が欲しいようなコード書くときはあんま Java 使わねーなwww