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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

会一直输出try和finally,好像每个try都对应一个必须执行的finally(楼上有人解释了catch不到),然后我模拟了只执行1000次try,结果也执行1000次finally。
如果把if中return去掉,楼上也有人测试过了,在大约3000次的时候,开始执行finally,而fianlly中又有foo方法,继续try finally循环,当然try也继续,如下图:

  1. public class Demo03 {
  2. static int i = 0;
  3. static int j = 0;

  4. public static void foo(){
  5. i++;
  6. if(i>1000){
  7. System.out.println("----------------- "+i);
  8. //return;
  9. }
  10. try{
  11. System.out.println("try "+ i);

  12. foo();
  13. }catch(Throwable e){
  14. System.out.println("catch " + i);
  15. }finally{
  16. j++;
  17. System.out.println("finally "+j);
  18. foo();
  19. }

  20. }
  21. public static void main(String[] args) {
  22. foo();
  23. }
  24. }
复制代码

1.jpg (7.61 KB, 下载次数: 8)

1.jpg
回复 使用道具 举报
贾文泽 发表于 2013-3-8 19:45

的确是这样,但不怎么会这样子
回复 使用道具 举报
12
您需要登录后才可以回帖 登录 | 加入黑马