new Timer().scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
System.out.println("run");
throw new SomeRandomException();
}
}, 1000, 1000);
输出:运行(抛出异常)
问题如下:我需要一个定时任务来检查数据库(或其他内容)中的特定条件。它一直在正常工作,但有时数据库(或其他内容)返回一些错误,导致异常被抛出并且计时器崩溃,此后没有一个单独的定时器任务会再次执行。是否有一种定时器实现可以在run()
方法抛出异常后继续工作。
我可以
new Timer().scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
try {
System.out.println("run");
throw new SomeRandomException();
} catch (Exception e) {
System.out.println("dummy catch");
}
}
}, 1000, 1000);
但这个方法似乎有些无力。
另一种选择是编写自己的Timer类实现,吞咽run方法的异常(这也不太对)。
Error
,否则它们会悄悄地终止你的任务。 - Peter Lawrey