InterruptedException的学习

首先贴一下overstack上的一个回答:

InterruptedException的学习_第1张图片

理解:

(1)throws InterruptedException是你方法声明的一部分,也是你调用方法的返回值。

(2)当你的方法调用另一个方法的时候抛出了InterruptException异常,你就应该思考:InterruptException对于你的方法来说是不是有意义的结果?如果是,那你的方法就可以进行异常声明并将异常进行向上传播.例如:你的方法需要等待网络传递过来数值参数来完成计算并返回结果,如果网络一直阻塞导致无法完成计算过程,你就可以将InterruptedException异常进行向上传播.如果不是,那你就不能将InterruptedException抛出,而是应该将其捕获.有两件事情你应该熟记在心:1.其他线程可能阻塞了你的线程,或者是想优雅的取消你的操作,那么你就应该尽快返回. 2.即使你的方法在遇到InterruptedException的时候也能够返回有意义的值,线程被干扰的事实也是很重要的.如果调用你方法的代码想知道你的方法执行期间是否遇到过干扰,你就应该记录下:Threaed.currentThread().interrupt()

InterruptedException的学习_第2张图片

 上面的这个例子展示了当调用computeSum这个函数的时候对可能抛出的InterruptException异常的处理,这种方法相比于直接返回栈信息或者抛出RuntimeException异常来说要友好很多.

InterruptedException的学习_第3张图片

 

上面的例子是说当你需要读取一个文件,你需要间隔性的尝试10次,如果在线程休眠时期遇到了中断,你就可以进行声明并异常抛出.

你可能感兴趣的:(InterruptedException的学习)