对递归+栈溢出异常+try-catch-finally的一个问题的分析

本文详细分析了一个涉及递归、栈溢出异常和try-catch-finally语句的问题。指出在栈溢出时,try和finally总是会被输出,catch则可能因匹配失败而不显示。分析了异常处理、栈内存使用和线程栈的影响因素,包括构造方法、println()方法调用等,并通过测试展示了不同情况下的输出结果。
摘要由CSDN通过智能技术生成

问题叙述:

问题来源以及众多运行结果的来源:http://www.iteye.com/topic/1112387

下面代码的输出结果:

  1. private static void foo() {     
  2.         try {     
  3.             System.out.println("try");     
  4.             foo();     
  5.         } catch (Throwable e) {     
  6.             System.out.println("catch");     
  7.             foo();     
  8.         } finally {     
  9.             System.out.println("finally");     
  10.             foo();     
  11.         }     
  12.     }     
  13.         
  14.     public static void main(String[] args) {     
  15.         foo();     
  16.     } 

分析结果:

这里分析的结果是,肯定会输出try和finally,catch有可能输出,也有可能不输出,跟具体情况有关!

疑问之处:

1,catch的出现或者不出现到底是有什么引起的?

2,有的输出出现串行,就是try-catch-finally在一行输出的情况!解决的方法是使用print("Xxx\n")的方式输出结果

3,线程栈的使用情况,都

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值