Come leggere e capire la traccia dello stack java?

Ad esempio, ho ottenuto una traccia stack come questa:

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) 

Quindi qual è la causa principale di questa eccezione? Dalla traccia dello stack, ho scoperto che c’è un problema con la funzione doFilter nella class OncePerRequestFilter ! Tuttavia, quando inserisco un punto di interruzione e il programma non si ferma mai in quel punto di interruzione.

Qualcuno potrebbe dare una spiegazione a riguardo !? E in generale, come dovrei usare quella cassa dello stack per il debug (leggi dal basso verso l’alto o dall’alto verso il basso)!

Generalmente il motivo esatto dell’eccezione si trova nella prima riga della traccia di stack e per ulteriori informazioni sulla causa di tale eccezione, è necessario spostarsi gradualmente verso il basso e la causa root può essere trovata in qualche punto vicino alla parte inferiore della pila. traccia.

Ma nella maggior parte dei casi, puoi persino ottenere la causa dell’eccezione dalle prime righe ..

Quindi, in questo caso, la tua eccezione è al metodo handleRequest , e quando ti sposti verso il basso, questi sono i metodi, che invocano il tuo metodo precedente (quello al di sopra del metodo corrente nella traccia dello stack)

In generale dovresti leggere dall’alto – quindi, in questo caso, esiste una NullPointerException alla riga 66 di UnixServerJobController, nel metodo handleRequest . Questo metodo è stato chiamato da SimpleControllerHandlerAdapter.handle , chiamato da DispatcherServlet.doDispatch ecc.

Tuttavia, in questo caso particolare è probabile che il primo fotogramma della traccia dello stack sia tutto ciò di cui hai bisogno. Guarda la riga 66 di UnixServerJobController , UnixServerJobController ciò che potrebbe essere nullo e agisci di conseguenza.

Si noti che a volte un’eccezione è racchiusa in un’altra (che a sua volta può essere avvolta in un’altra, ecc.). In questo caso dovresti esaminare ciascuna delle tracce dello stack – spesso è l’eccezione “più nidificata” che fornisce le informazioni più utili, poiché questa è la causa principale.

Questo tutorial potrebbe far luce sul tuo problema e aiutarti a capire meglio le cose.

Secondo il tuo problema, sembra che tu abbia una Null Pointer Exception alla riga 66 della class Job Controller di Unix Server.