30秒ごとに実行するようにスケジュールしたい非常に単純な Runnable があります-これはこの質問のための単純な例であり、実際にこれを使用する実際のポイントではないことに注意してください。
@Override
public void run() {
System.out.println("Throwing an unchecked exception on purpose...");
int abc = 123 - 123;
int def = 123 / abc;
}
Timer と TimerTask を使用していましたが、問題が発生しました。TimerTask がチェックされていない例外を発生させると、そのタスクの後続の実行がキャンセルされます。したがって、上記のタスクは、未チェックの除算 0 例外をスローするため、実際には 1 回だけ実行されます。
私の知る限り、ScheduledThreadPoolExecutor には、少なくとも公式の Java API ドキュメント「タスクの実行で例外が発生した場合、後続の実行は抑制される」によると、まったく同じ「機能」があります。
チェックされていない例外が発生した場合に、Timer または ScheduledThreadPoolExecutor のいずれかを後続の実行を抑制しないようにする Java の標準的な方法はありますか?
どうもありがとう。