一尘不染

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

java

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

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!但是,当我在此处放置一个断点时,程序永远不会在该断点处停止。

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


阅读 378

收藏
2020-03-14

共1个答案

一尘不染

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

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

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

2020-03-14