gpt4 book ai didi

java - 堆栈跟踪是如何生成的?

转载 作者:搜寻专家 更新时间:2023-11-01 04:04:39 25 4
gpt4 key购买 nike

程序中没有任何一个方法“知道”它在堆栈中的位置。它所知道的只是它自己的小工作,它会完成并返回。那么当抛出异常并打印堆栈跟踪时,这是从哪里来的?

在 JVM 中是否隐含地有一个单独的线程与每个应用程序一起运行以监视程序的状态?还是 JVM 本身保存了这些信息,而异常在抛出时以某种方式从中提取了这些数据?

如果是其中任何一种情况,是否可以使用一些调用来检索堆栈跟踪(从监视器线程或 JVM) 不抛出异常?

最佳答案

每个线程都有自己的。每个方法调用都会创建一个堆栈帧。如果任何方法的代码中发生错误,该错误将传播到调用方方法。这样 JVM 可以跟踪哪个方法产生了错误以及调用层次结构是什么。

如果您正确观察堆栈跟踪,您会看到顶部出现错误的方法和底部的层次结构。

youtube 有精彩讲座由一位斯坦福大学教授来了解它是如何工作的。我建议观看它。

注意:这是理论。如果您想了解 API 的工作原理,@Peter Lawrey 的回答可能对您有所帮助。

关于java - 堆栈跟踪是如何生成的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12865180/

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