Thread.sleep()的InterruptedException

时间:2010-08-02 17:44:16

标签: java multithreading

在Java中,Thread.sleep()抛出InterruptedException。这个例外的正确做法是什么?

我应该

  1. 在调用链上传播异常?
  2. 吞下这个例外?
  3. 做其他事(请建议)?

2 个答案:

答案 0 :(得分:9)

你应该重新抛出异常。

这是Brian Goetz的摘要,他是优秀书籍“Java Concurrency in Practice”的作者:

  

处理InterruptedException

     

如果抛出InterruptedException意味着   方法是一种阻塞方法,   然后调用阻塞方法意味着   你的方法是一种阻止方法   你也应该有一个策略   用于处理InterruptedException。   通常最简单的策略是投掷   InterruptedException自己,如   putTask()和getTask()中显示   清单1中的方法   你的方法响应中断   同样也经常不需要任何东西   不只是添加InterruptedException   你的投掷条款。

请参阅:Dealing with InterruptedException

答案 1 :(得分:0)

如果你要做的就是烧掉一些时间,我建议你去捕捉并忽略这个例外。

另一方面,如果您需要适当的等待时间,并且任何先发制人的中断对您的程序来说真的很糟糕,那么您一定要重新抛出异常。

首先取决于异常发生的原因以及Thread.sleep()的用例。