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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

class Try {
       public  static void foo() {
             try {
                         System.out.println("try");
                   }
             finally {
             System.out.println("finally");
               foo();
             }
         }
}
这个输出的结果是finally 和try循环出现,那为什么是先出现finally?
还有如果我在try中加个for语句,才是try。。。。finally出现:
class Try {
       public  static void foo() {
             try {
                 for(int x=0;x<=20;x++){
                     System.out.println("try");
                 }
             }
             finally {
             System.out.println("finally");
               foo();
             }
         }
}
随便求一点技术分,我报名急需

评分

参与人数 1技术分 +1 收起 理由
韩军博 + 1 神马都是浮云

查看全部评分

7 个回复

倒序浏览
你说的输出结果应该是错了,因为你的程序是死循环,结果一下子出现很多,可能你没看到你需要的结果。那么你不应该运行,而应该调试一下,再看看吧
不管怎么样,都是先执行try,在执行finally块的。
回复 使用道具 举报
在测试一下吧,输出结果就是try finally,可能你没有注意
回复 使用道具 举报
import java.util.*;

class Try {
        public  static void foo() {
                try {
                        System.out.println("try");
                }
                finally {
                        System.out.println("finally");
                        new Scanner(System.in).nextLine();
                        foo();
                }
        }
       
        public static void main(String[] args){
                foo();
        }
}

你加个测试语句测试一下就清楚了,都是先try  后finally
回复 使用道具 举报
难道是我写错了,还是没说清楚,第一个程序,我运行后真的是先finally后try
回复 使用道具 举报
public class q {
        public static void main(String[] args) {
                 Try t=new Try();
                 t.foo();
        }
}
class Try
{
        public  static void foo() {
        try {
                System.out.println("try");
            }
        finally {
        System.out.println("finally");
          foo();
        }
    }
}楼主说的不全对,运行后是先finally后try,但是是死循环的,不断输出finally和try,运行着就停掉了,这种死循环的做法是不对的,个人认为这个死循环结果没什么参考意义。把红色的foo()注释掉,运行结果是try,finally;
回复 使用道具 举报
这个?因为你的程序就是一个无限迭代的程序,会出现死循环,你打印的字符串大小超出了环境的设定值,所以应该是打印“try” “finally”这样的顺序的,但是,环境会把前边的
回复 使用道具 举报
这个?因为你的程序就是一个无限迭代的程序,会出现死循环,你打印的字符串大小超出了环境的设定值,所以应该是打印“try” “finally”这样的顺序的,但是,环境会把前边的try不显示。你加上for循环也是这样,并且本来是要打印20个try的,但是答应出来的不够。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马