gpt4 book ai didi

java - StackOverFlow错误处理和Java恢复

转载 作者:行者123 更新时间:2023-11-30 06:34:22 25 4
gpt4 key购买 nike

谁能解释一下 StackOverFlowError 是如何工作的吗?

我知道无限递归会导致 StackOverFlowError,但是堆栈满后是否会执行其他方法?我已经处理了 catch block 中的错误。我想知道java如何运行或从捕获的错误中恢复。

示例代码:

public class Test {    
public static void main(String[] args) {
try {
show();
} catch(StackOverflowError e) {
System.out.println(e);
}
System.out.println("After StackOverFlowError");

display();
}

static void show() {
show();
}

static void display() {
System.out.println("Hello New Function");
}
}

输出是:

java.lang.StackOverflowError

After StackOverFlowError

Hello New Function

最佳答案

是的,java从中恢复了。当抛出 StackOverflowError 时,它会通过所有 show() 方法展开堆栈,直到它返回到您的 catch block 。此时,堆栈中只剩下 main(),您可以继续执行程序而不会出现问题。

您的调用堆栈将如下所示:

main()
show()
show()
show()...

无论你的堆栈内存允许它有多深,当最后一个 show() 方法获取异常时,它会将其抛出到每个 show 方法,该方法会重新抛出它,直到它到达 main 中的 catch block 并打印错误。

关于java - StackOverFlow错误处理和Java恢复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45450648/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com