黑马程序员技术交流社区
标题:
异常处理问题
[打印本页]
作者:
乔玉吉
时间:
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