黑马程序员技术交流社区

标题: 为什么不能抛出异常 [打印本页]

作者: NO?    时间: 2014-4-2 22:33
标题: 为什么不能抛出异常
  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行需要处理异常?

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




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