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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© NO? 中级黑马   /  2014-4-2 22:33  /  1535 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. class Res{
  2.         private String name;
  3.         private String sex;
  4.         private boolean flag = false;
  5.         
  6.         public synchronized void set(String name,String sex){
  7.                 if(flag)
  8.                         try{this.wait();}catch(Exception e){}
  9.                 this.name = name;
  10.                 this.sex = sex;
  11.                 flag = true;
  12.                 this.notify();
  13.         }
  14.         public synchronized void out(){
  15.                 if(!flag)
  16.                         try{this.wait();}catch(Exception e){}
  17.                 System.out.println(name+"##"+sex);
  18.                 flag = false;
  19.                 this.notify();
  20.         }
  21. }

  22. class Input implements Runnable{
  23.         private Res r;
  24.         Input(Res r){
  25.                 this.r = r;
  26.         }
  27.         public void run(){
  28.                 int x = 0;
  29.                 while(true){
  30.                         if(x==0)
  31.                                 r.set("li", "man");
  32.                         else
  33.                                 r.set("wang", "woman");
  34.                         x = (x+1)%2;
  35.                         
  36.                 }
  37.         }
  38. }

  39. class Output implements Runnable{
  40.         private Res r;
  41.         Output(Res r){
  42.                 this.r = r;
  43.         }
  44.         public void run() {
  45.                 while(true){
  46.                         r.out();                        
  47.                 }

  48.         }
  49. }
  50. class InputOut{
  51.         public static void main(String[] args){
  52.                 Res r = new Res();
  53.                 new Thread(new Input(r)).start();
  54.                 new Thread(new Output(r)).start();
  55.         }
  56. }
复制代码
if(flag) try{this.wait();}catch(Exception e){}  
为什么第8行和第16行需要处理异常?

1 个回复

倒序浏览
你写程序的目的是希望你的程序完整执行并且健壮,不是让你写程序报异常的,但是你写的程序可能会出现这样异常。
throwable error exception
异常分为两种一是内存溢出,虚拟机出现崩溃的现象,使用以前的电脑写个死循环电脑都蓝屏了.
第二种是可以解决的程序,例如1/0.
你说的“f(flag) try{this.wait();}catch(Exception e){}  
为什么第8行和第16行需要处理异常?”是因为:调用wait这个方法可能会出现异常,计算机不是人出现了错误我可能自我解决但是计算机是傻鸟不知道该如何解决,所以如果出现Exception的时候我们只要规定它报一下异常就行了,否则就可以执行这是java语言的设计思想,如果想知道更多建议参考《深入java虚拟机》这本书用来提高编程思想
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马