当前位置: 首页 > 面试题库 >

如何阅读和理解Java堆栈跟踪?

董庆
2023-03-14
问题内容

例如,我得到了这样的堆栈跟踪:

java.lang.NullPointerException
abc.investxa.presentation.controllers.UnixServerJobController.handleRequest(UnixServerJobController.java:66)
org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:875)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:807)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:571)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:501)
javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:96)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)

那么,此异常的根本原因是什么?从堆栈跟踪中,我发现类中的doFilter函数存在问题OncePerRequestFilter!但是,当我在此处放置一个断点时,程序永远不会在该断点处停止。

谁能给这个解释!在一般情况下,我应该如何使用该堆栈情况进行调试(从下至上或从上至下读取)!


问题答案:

通常,确切的原因Exception在堆栈跟踪的第一行,有关该异常原因的更多信息,你需要逐步向下移动,并且根本原因通常可以在堆栈跟踪底部的某个位置找到。 。

但是在大多数情况下,你甚至可以从前几行中获取异常原因。

因此,在这种情况下,你的例外是handleRequest方法,而当你向下移动时,这些方法将调用你先前的方法(堆栈跟踪中当前方法上方的方法)



 类似资料:
  • 例如,我得到了一个堆栈跟踪,如下所示: 那么这个异常的根本原因是什么呢?从堆栈跟踪中,我发现类中的函数存在问题!然而,当我把一个断点放在那里,程序永远不会停在那个断点上。 有人能解释一下吗?在一般情况下,我应该如何使用堆栈进行调试(从下到上读或从上到下读)!

  • 问题内容: 如何理解java的栈跟踪(stack trace) ?怎样使用它来调试程序? 问题答案: 简单来说,堆栈跟踪是应用程序在引发时处于中间的方法调用的列表。 简单的例子 通过问题中给出的示例,我们可以准确确定在应用程序中引发异常的位置。让我们看一下堆栈跟踪: 这是一个非常简单的堆栈跟踪。如果我们从列表的开头开始,我们可以判断出错误发生在哪里。我们正在寻找的是应用程序中最顶层的方法调用。在这

  • 问题内容: 程序中没有单个方法“知道”它在堆栈中的位置。它所知道的只是它自己的小工作,它完成了并返回了。因此,当引发异常并打印堆栈跟踪时,它是从哪里来的? 在JVM中监视程序状态的每个应用程序旁边隐式地运行着一个单独的线程吗?还是JVM本身保存此信息,并且在抛出异常时以某种方式从异常中提取数据? 如果是上述两种情况之一,是否可以使用某些调用来检索堆栈跟踪(从监视器线程或JVM) 而不会 引发异常?

  • 我想了解SWIFT中的堆栈和堆中存储了什么。我有一个粗略的估计:你打印的所有东西和内存地址都不是值,那些存储在堆栈中,而打印出来的是值,那些在堆中,基本上是根据值和引用类型。我完全错了吗?另外,可以提供堆栈/堆的可视化表示吗?

  • 问题内容: 当您在Java中使用RMI时,收到异常时将在其前面添加远程堆栈跟踪,如下所示: 那种堆栈跟踪“伪造”如何完成? 我想要什么(除了被迭代)?好吧,如果我能这样做的话,它将对我有帮助: 并使其成为引发日志记录的目的,在堆栈跟踪中也将引发异常(并且方法在链的下游)。 问题答案: 这很容易: Throwable有方法和。 从我的一个项目(非开源,但也许有一天我将打开远程调用引擎): 为了您的方

  • 当Xdebug被激活时,只要PHP决定显示通知,警告,错误等,就会显示堆栈跟踪。堆栈跟踪显示的信息以及显示方式可以根据您的需要进行配置。 Xdebug在错误情况下显示的堆栈跟踪信息量相当保守(如果display.errors 在php.ini中设置为On)。这是因为大量的信息会减慢脚本的执行速度和浏览器中堆栈跟踪本身的渲染速度。但是,可以使堆栈轨迹以不同的设置显示更详细的信息。 堆栈跟踪中的变量