黑马程序员技术交流社区

标题: 异常处理问题 [打印本页]

作者: 乔玉吉    时间: 2012-3-17 02:50
标题: 异常处理问题
class  TryCatchFinallyTest
{
        private static void foo()
        {
                try
                {
                        System.out.println("try");
                        foo();
                }
                catch (Throwable e)
                {
                        System.out.println("catch");
                        foo();
                }
                finally
                {
                        System.out.println("finally");
                        foo();
                }
        }
        public static void main(String[] args)
        {
                foo();
        }
}

上述代码运行后:
A.执行一段时间后报栈溢出。
B.会一直输出“try”。
C.会一直输出“try”和“finally”。
D.会一直输出“try”、“catch”和“finally”

作者: 蒙武辉    时间: 2012-3-17 02:56
我运行了一下,一直输出“try”和“finally”。你是不理解为啥这样输出吗?

作者: 贠(yun)靖    时间: 2012-3-17 03:09
我感觉这成了个无线循环了  跟递归调用差不多   
     我的分析是: 第一种情况    如果是异常的话  try 里面就不执行  catch里执行 那么就会 输出 catch 再调用一次foo()  而finally 一定执行  会输出finally  再调用foo()   这是一轮  依次这样循环  内存会爆掉的     
                       第二种情况     如果是不是异常的话  那么执行try   输出try   再调用foo()   finally上上面情况一样 也是个无线循环了 而且是越调用循环越多      所以我觉得应该选a
作者: 乔玉吉    时间: 2012-3-17 18:07
蒙武辉 发表于 2012-3-17 02:56
我运行了一下,一直输出“try”和“finally”。你是不理解为啥这样输出吗?
...

我也觉得答案是C
作者: 泮和顺    时间: 2012-3-19 17:18
蒙武辉 发表于 2012-3-17 02:56
我运行了一下,一直输出“try”和“finally”。你是不理解为啥这样输出吗?
...

是啊  怎么不是一直try呢 finally不是最后输出 吗




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