程序中没有一个方法“知道”它在堆栈中的位置.它所知道的只是它自己的小工作,它就是这样做并且回归.因此,当抛出异常并打印堆栈跟踪时,它来自何处?
是否隐含地在JVM中的每个应用程序旁边运行一个单独的Thread来监视程序的状态?或者JVM本身是否拥有此信息,并且异常以某种方式在抛出时从中提取数据?
如果是这种情况之一,是否可以使用一些调用来检索堆栈跟踪(来自监视器线程或JVM)而不抛出异常?
解决方法:
每个线程都有自己的堆栈.每个方法调用都会创建一个堆栈帧.如果在任何方法的代码中发生了错误,那么它将传播到调用方法.这样JVM可以跟踪哪个方法生成错误以及调用层次结构是什么.
如果正确观察堆栈跟踪,您将看到顶部出现错误的方法和底部的层次结构.
斯坦福大学教授在youtube年举办了一场精彩的讲座,了解它是如何运作的.我建议看一下.
注意:这是理论.如果您想了解API的工作原理,@ Peter Lawrey的回答可能会对您有所帮助.
标签:java,exception,stack-trace 来源: https://codeday.me/bug/20190713/1450579.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。