精华帖 (10) :: 良好帖 (0) :: 新手帖 (5) :: 隐藏帖 (1)
|
|
---|---|
作者 | 正文 |
发表时间:2011-07-19
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(); } 想了半天还是不明白到底输出是什么形式的,希望大神门都能告诉小弟一声! 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2011-07-19
try2863 try2864 try2865 try2866 try2867 try2868 try2869 try2870 try2871 try2872 try2873 try2874 try2875 try2876 try2877 try2878 try2879 try2880 try2881 try2882 try2883 try2884 try2885 try2886 try2887 try2888 try2889 try2890 try2891 try2892 try2893 try2894 try2895 try2896 try2897catch2897finally2897catch2896 try2897catch2897finally2897finally2896 try2897catch2897finally2897catch2895 try2896 try2897catch2897finally2897catch2896 try2897catch2897finally2897finally2896 try2897catch2897finally2897finally2895 try2896 try2897catch2897finally2897catch2896 try2897catch2897finally2897finally2896 try2897catch2897finally2897catch2894 try2895 try2896 try2897catch2897finally2897catch2896 try2897catch2897finally2897finally2896 try2897catch2897finally2897catch2895 try2896 try2897catch2897finally2897catch2896 try2897catch2897finally2897finally2896 try2897catch2897finally2897finally2895 try2896 try2897catch2897finally2897catch2896 try2897catch2897finally2897finally2896 try2897catch2897finally2897finally2894 try2895 try2896 try2897catch2897finally2897catch2896 try2897catch2897finally2897finally2896 try2897catch2897finally2897catch2895 try2896 try2897catch2897finally2897catch2896 try2897catch2897finally2897finally2896 try2897catch2897finally2897finally2895 try2896 try2897catch2897finally2897catch2896 try2897catch2897finally2897finally2896 try2897catch2897finally2897catch2893 try2894 try2895 try2896 try2897catch2897finally2897catch2896 try2897catch2897finally2897finally2896 try2897catch2897finally2897catch2895 try2896 我机器上的执行,我也纳闷了,单线程的跑,貌似又是finally也没执行,而是执行了几次try?实际上每个i的值try和finally都打印出来了,我传递的是同一个i值,只在方法开始前+. 我的版本1.6.0_10 |
|
返回顶楼 | |
发表时间:2011-07-19
自己拿到自己的环境中运行一下呗。。。。。
|
|
返回顶楼 | |
发表时间:2011-07-19
理论上是无限递归,结果是只会输出 try
|
|
返回顶楼 | |
发表时间:2011-07-19
ptma 写道 理论上是无限递归,结果是只会输出 try
然而实际执行过程中,肯定会由于堆栈溢出等问题出现异常,从而出现catch和finally。 具体的溢出点,则要看具体的堆栈大小和虚拟机实现的情况了。 |
|
返回顶楼 | |
发表时间:2011-07-19
abettor 写道 ptma 写道 理论上是无限递归,结果是只会输出 try
然而实际执行过程中,肯定会由于堆栈溢出等问题出现异常,从而出现catch和finally。 具体的溢出点,则要看具体的堆栈大小和虚拟机实现的情况了。 如果栈溢出就会抛异常,那么catch也会输出,就是没有啊? |
|
返回顶楼 | |
发表时间:2011-07-19
蛋疼的问题,有意义?
|
|
返回顶楼 | |
发表时间:2011-07-19
你在浪费自己的时间,也在浪费我们的时间
|
|
返回顶楼 | |
发表时间:2011-07-19
我觉得这个问题挺好的, 有助于理解JVM 和异常捕获的运行机制。
|
|
返回顶楼 | |
发表时间:2011-07-19
Laosong 写道 abettor 写道 ptma 写道 理论上是无限递归,结果是只会输出 try
然而实际执行过程中,肯定会由于堆栈溢出等问题出现异常,从而出现catch和finally。 具体的溢出点,则要看具体的堆栈大小和虚拟机实现的情况了。 如果栈溢出就会抛异常,那么catch也会输出,就是没有啊? StackOverflowError是错误,程序捕获不到! |
|
返回顶楼 | |