Fantasy's World

世界的小世界,我的大世界^_^

  BlogJava :: 首页 :: 联系 :: 聚合  :: 管理
  6 Posts :: 0 Stories :: 16 Comments :: 0 Trackbacks

2005年12月29日 #

首先看看我写的一个小程序:

public class TestTry extends Exception
{
 static boolean f=false;
 static int sum=0;
 static int created=0;
 static int i=0;
 TestTry()
 {
  i=created++;
  if(created>=299) f=true;
  }
 public void finalize()
 {
  sum++;
  }
 public static void main(String[] args)
 {
  while(!TestTry.f)
  {
   try{
    throw new TestTry();
    }catch(Exception e){}
    finally{
     System.out.println("Creat "+TestTry.i+" TestTry, "+TestTry.sum+" has been finalized!");
     }
    }
  //System.out.println("Creat "+TestTry.created+" TestTry, "+TestTry.sum+" has been finalized!"); 
  }
 }

这个是我在测试在try语句抛出异常后,在try语句中建立的对象是否会调用自身的终止函数时发现的,这里有个奇怪的现象在if(created>=299) f=true;这条语句中,如果把条件created>=299改为>=比299更大的数,你会发现System.out.println("Creat "+TestTry.i+" TestTry, "+TestTry.sum+" has been finalized!");这条语句的输出的结果并不是你预想的那样(输出判断的数字+1的行数),而只是显示最后的三百行。那么在这之前抛出的异常上哪里去了呢?难道说Java只处理最后抛出的三百的异常么?
posted @ 2005-12-29 18:21 FinalFantasy 阅读(349) | 评论 (0)编辑 收藏