A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 曹宇 中级黑马   /  2013-5-8 18:09  /  1350 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 曹宇 于 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的内容。

这是为什么呢?

评分

参与人数 1技术分 +1 收起 理由
HM汪磊 + 1

查看全部评分

4 个回复

倒序浏览
wait()方法throws InterruptedException异常。
当它正常运行的时候,不会抛出异常,所以就不会执行相应catch代码块。
当wait()方法遇到异常情况被打断,就会抛出InterruptedException异常,执行它的catch代码块。
回复 使用道具 举报
interrupt()是中断线程啊,是Thread的一个方法。notify()  唤醒在此对象监视器上等待的单个线程,notifyAll() 唤醒在此对象监视器上等待的所有线程。
回复 使用道具 举报
任江峰 发表于 2013-5-9 21:50
wait()方法throws InterruptedException异常。
当它正常运行的时候,不会抛出异常,所以就不会执行相应catc ...

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

我叫我自己误解了。
我以为wait方法是抛出个异常而用来实现让线程等待的功能。
回复 使用道具 举报

问题解决请编辑改为已解决,有疑问可以继续追问
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马