我有一个,它通过(可以改为使用)定期ScheduledExecutorService
调用Runnable。scheduleWithFixedDelay()
scheduleAtFixedRate()
现在正在考虑如果发生错误该怎么办。如果它无法从 (*) 中轻松恢复,我希望选择停止所有进一步的调用,但不确定执行此操作的最佳方法。
显然,无法从 Runnable 抛出已检查的异常,因此希望获得有关如何从以下选项中进行选择的任何指导:
scheduledFuture.cancel(false);
...or...
scheduledFuture.cancel(true);
...or...
scheduledExecutorService.shutdown();
...or...
scheduledExecutorService.shutdownNow();
...or...
Throw a custom RuntimeException myself?
...or...
Something else?
(*) 想知道一般情况,但如果有人感兴趣,我目前正在查看的检查异常是ParserConfigurationException
从DocumentBuilderFactory.newDocumentBuilder()
. 如果抛出此错误,则表明存在严重问题,因此我基本上希望调度完全停止,而不是每次都可能重复错误。