在Java中,Thread.sleep()方法会抛出InterruptedException异常。应该如何处理这个异常呢?
以下是几种可能的方式:
以下是几种可能的方式:
- 将异常向上层调用者传播。
- 忽略异常。
- 采取其他处理方式(请提出建议)。
你应该重新抛出异常。
这是来自 Brian Goetz 的摘要,他是优秀书籍 "Java并发编程实战" 的作者:
处理InterruptedException:
如果抛出InterruptedException意味着一个方法是阻塞方法, 那么调用阻塞方法意味着 你的方法也是阻塞方法, 并且你应该有一种策略 来处理InterruptedException。 经常最简单的策略是自己抛出 InterruptedException,就像 在清单1中的putTask()和getTask() 方法所示。这样做使得 你的方法也可以响应中断, 并且通常只需要将InterruptedException 添加到你的throws子句中。
如果你只是想消磨一些时间,我建议你捕获并忽略异常。
另一方面,如果你需要正确的等待时间,任何预防性中断对你的程序都非常不利,那么你应该绝对重新抛出异常。
这取决于异常发生的原因以及你在首次使用Thread.sleep()
时的用例。