我在java docs中看到了这个:ScheduledAtFixedRate,它说
如果任务的任何执行遇到异常,则后续执行被禁止
我不希望在我的应用程序中发生这种情况.即使我看到异常,我也总是希望后续执行发生并继续.我怎样才能从中获得这种行为ScheduledExecutorService
.
使用try/catch包围Callable.call方法或Runnable.run方法...
例如:
public void run() { try { // ... code } catch(final IOException ex) { // handle it } catch(final RuntimeException ex) { // handle it } catch(final Exception ex) { // handle it } catch(final Error ex) { // handle it } catch(final Throwable ex) { // handle it } }
请注意,除了编译器告诉你的内容之外还有其他任何东西(我的示例中的IOException)并不是一个好主意,但有时候,这听起来像其中之一,如果你正确处理它可以解决它.
请记住,像Error这样的东西非常糟糕 - 虚拟机内存不足等等......所以要小心你如何处理它们(这就是为什么我将它们分成自己的处理程序而不仅仅是捕获(最终的Throwable ex)而没有什么其他).