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