我有一个非常简单的 Runnable,我想安排每 30 秒执行一次 - 请记住,这只是这个问题的一个简单示例,而不是在现实中使用它的实际意义。
@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 异常。
据我所知,ScheduledThreadPoolExecutor 具有完全相同的“功能”,至少根据官方 Java API 文档“如果任务的任何执行遇到异常,后续执行将被抑制”。
如果引发未经检查的异常,Java中是否有任何标准方法可以使 Timer 或 ScheduledThreadPoolExecutor 不抑制后续执行?
非常感谢。