new Timer().scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
System.out.println("run");
throw new SomeRandomException();
}
}, 1000, 1000);
输出:运行(抛出异常)Java的Timer类:定时器任务停止执行,如果在某一个任务异常被抛出
这里有一个问题:我需要一个定时器来检查特定数据库中的条件(或其他)。它工作正常,但有时数据库(或别的东西)会返回一些错误,引发异常并且定时器崩溃,然后再次执行任何单个定时器任务。是否有一些Timer实现在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's以及或者他们默默地杀死你的任务以及。 – 2012-01-05 13:14:28