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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 ︶喂〆快到碗里 于 2014-9-7 21:33 编辑

class Test
{
        public static String output="";
        public static void foo(int i)
        {
                try
                {
                        if(i==1){
                                throw new RuntimeException();
                                }
                        output+="1";
                }
                catch (RuntimeException e)
                {
                        output+="2";
                        return;
                }
                finally
                {
                        output+="3";
                }
                output+="4";
        }
        public static void main(String[] args)
        {
                foo(0);
                System.out.println(output);
                foo(1);
                System.out.println(output);
        }
}

10 个回复

倒序浏览
foo(0)=8,foo(1)=6,因为0不等于1所以不抛出异常,执行一次0+1,不执行catch,finally执行,最后一句也执行,所以是0+1+3+4=8;foo(1),满足条件抛出异常,所以,1+1不执行,执行catch,因为有return所以直接返回值,下面的+4不执行,但因为有finally所以再加3,所以是1+2+3=6
回复 使用道具 举报
不知道对不对啊
回复 使用道具 举报
134,传递参数0时,不会抛出运行时异常。所以执行完try里面的 output+="1";语句,接着执行finally和语句块外面的语句。
13423,传递参数1时,抛出异常,执行catch中的  output+="2";无论是否捕捉到异常,都需要执行finally里面语句块。如果捕捉到异常,finally之外的语句将不被执行。所以执行output+="3"。
【另异常请参考:http://bbs.itheima.com/thread-140825-1-1.html
回复 使用道具 举报
路过 凑热闹
回复 使用道具 举报
还没学到,暂时一知半解
回复 使用道具 举报
因为要打印的结果output是static String类型的。所以output在程序运行时,一直存在。String字符串相加,只是将字符串链接。
foo(0)。无异常,程序执行try--》finally。try结果output=“1”----》finally结果output=“134”
foo(1)。异常,   程序执行try--catch---finally。执行try时,先抛出异常,后边output+="1";不执行。然后,catch,结果:output=“1342”;虽然有return,但是有finally语句,所以仍然执行finally语句。结果output=“13423”。执行完finally后,立刻转到catch中的return。程序结束。
细节可能不足,请酌情采纳。另外推荐搜索一下:try catch  finally语句执行顺序,try catch finally中带return语句的执行顺序。
回复 使用道具 举报
楼上的注意《  public static String output="";》中的关键字”String“   
结果应该是 :
134

13423
回复 使用道具 举报 1 0
134(不等于1,加1,执行finally加3,往下执行加4)
13423(等于1,捕获,加2,执行finally加3,结束)
回复 使用道具 举报
梧桐树下 来自手机 中级黑马 2014-9-1 00:14:06
10#
134'13423视频里的题
回复 使用道具 举报
姠佐メ亾佑つ 发表于 2014-8-31 23:38
楼上的注意《  public static String output="";》中的关键字”String“   
结果应该是 :
134

恩!关键就是static  String
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马