黑马程序员技术交流社区

标题: 输出结果? [打印本页]

作者: 张海洋    时间: 2013-3-23 09:22
标题: 输出结果?
本帖最后由 张海洋 于 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 09:39

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);
        }
}


作者: MyNameIs520    时间: 2013-3-23 10:28

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


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




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2