【发布时间】:2013-07-24 01:17:00
【问题描述】:
我有一个java程序,可以无限次运行。
程序代码:
void asd()
{
try
{
//inside try block
System.out.println("Inside try !!!");
asd();
}
finally
{
//inside finally
System.out.println("Inside finally !!!");
asd();
}
}
OUTPUT :此程序通过不断打印两个系统输出来无限运行。
我的问题:在某些时候,它开始从 try 块中抛出 StackOverflowErrors ,因此它到达 finally 块,我们再次递归调用此函数。但是由于我们已经面临 StackOverflowError,finally 块中的递归函数是如何执行的呢?
JVM 如何处理这种情况?如果我们也得到 OutOfMemoryErrors 会发生同样的行为吗?
【问题讨论】:
标签: java recursion jvm stack-overflow try-finally