黑马程序员技术交流社区

标题: wait()方法为什么不运行catch块的内容? [打印本页]

作者: 曹宇    时间: 2013-5-8 18:09
标题: wait()方法为什么不运行catch块的内容?
本帖最后由 曹宇 于 2013-5-11 14:47 编辑
  1. try
  2.                         {
  3.                                 wait();
  4.                         }
  5.                         catch (InterruptedException e)
  6.                         {
  7.                                 System.out.println("InterruptedException异常了");
  8.                         }
复制代码
如上面代码,运行程序的时候,仅仅线程就wait了,并没有进行异常处理,没有输出InterruptedException异常了。
而我用interrupt()方法唤醒线程的时候,运行了 catch块中的内容。输出了InterruptedException异常了。

我查阅 api 发现 wait方法和 interrupt方法 都会抛出异常的。
现在想起来以前在看老师视频讲解的时候,对wait的 try catch 都没有输出过catch的内容。

这是为什么呢?

作者: 任江峰    时间: 2013-5-9 21:50
wait()方法throws InterruptedException异常。
当它正常运行的时候,不会抛出异常,所以就不会执行相应catch代码块。
当wait()方法遇到异常情况被打断,就会抛出InterruptedException异常,执行它的catch代码块。
作者: 逝者轨迹    时间: 2013-5-10 00:14
interrupt()是中断线程啊,是Thread的一个方法。notify()  唤醒在此对象监视器上等待的单个线程,notifyAll() 唤醒在此对象监视器上等待的所有线程。
作者: 曹宇    时间: 2013-5-10 13:37
任江峰 发表于 2013-5-9 21:50
wait()方法throws InterruptedException异常。
当它正常运行的时候,不会抛出异常,所以就不会执行相应catc ...

恩,我晓得了,我自己思维混乱了,就跟别的其他异常了 只是定义会发生异常,没异常正常运行有异常就抛出。。

我叫我自己误解了。
我以为wait方法是抛出个异常而用来实现让线程等待的功能。
作者: 曹睿翔    时间: 2013-5-10 22:36

问题解决请编辑改为已解决,有疑问可以继续追问




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2