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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张海洋 中级黑马   /  2013-3-23 09:22  /  1443 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 张海洋 于 2013-3-23 19:30 编辑

class Test
{
        public static String output="";
        public static void foo(int i)
        {
                try
                {
                        if(i==1)
                                throw new Exception();         
                        output+="1";
                }
                catch(Exception 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);
        }
}

点评

如果问题未解决,请继续追问回复者,如果问题已经解决,请将分类改为“已解决”,谢谢  发表于 2013-3-23 17:30

评分

参与人数 1技术分 +1 收起 理由
贾文泽 + 1

查看全部评分

3 个回复

倒序浏览

class Test
{
        public static String output="";
        public static void foo(int i)                1        一
        {
                try
                {
                                        if(i==1)
                                                        throw new Exception();      二   
                                        output+="1";                        2
                }
                catch(Exception e)                                                三
                {
                                        output+="2";                                                四
                                        return;                                                                五
                }
                finally
                {
                    output+="3";                        3                        六
                }
                output+="4";                                4
        }
        public static void main(String args[])
        {
                        foo(0);//看运行顺序序号(1234),所以输出的是134
                        System.out.println(output);
                        foo(1); ///看运行顺序序号(一二三四五六),因为output是静态的,所以得到的结果是:134+2+3=13423
                        System.out.println(output);
        }
}

评分

参与人数 1技术分 +1 收起 理由
贾文泽 + 1

查看全部评分

回复 使用道具 举报

public class RunDemo {
        public static String output = "";

        public static void foo(int i) {
                try {
                        if (i == 1)
                                throw new Exception();
                        output += "1";                     //相当于output = output+"1",完成字符串的拼接,output="1";
                } catch (Exception 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);
        }
}

输出结果如下:
134
13423

回复 使用道具 举报
考察的是try{}catch(){}和finally{}以及return的相互关系的知识点
try代码块中 是有可能抛出异常的代码,是有可能 。如果代码异常,就会异常抛出,则异常代码下的语句是执行不到。如foo(1)时 就没有执行到   output += "1";
异常抛出后catch捕捉代码块 ,就会进行处理。如果try代码块没有发生异常,则catch代码块就不会被执行到。而finally代码块是一定要执行的代码。finally语句的出现一般是为了释放共享资源 如对数据 库的连接中断,对锁的释放,防止异常。等等。执行到return语句时,程序会在结束前执行完要执行的代码,即finally代码块。finally是在return之前执行。

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马