最近看线上日志,发现tomcat中出现了大量的空指针异常,但是很奇怪。只是简单的打出了NullPointerException,没有详细的堆栈信息,可能是因为某块代码没做异常保护。导致走这块流程的请求全都失效了。。
但是有什么具体的方法找到是在哪里抛出的异常吗?有没有好的方法???手动的话,完全无法下手= =
希望各位Java大牛指教一下。。。。
8 个解决方案
#1
如果没有堆栈,就没有好办法了。要是程序有写其它日志的,看看其它日志里面出错前后的内容,要是什么都没有只有NullPointerException的话,那么看看能不能根据错误发送的时间回忆起做的事情。要是连时间都没有的话,只好自己在界面上东摸摸西摸摸,后台不停的看日志,看什么时候刷出错误来了。
#2
先确认下是怎样方式输出的,log4j,system out print,or others
然后,工程中代码searching吧。。。。。。
关键字比如(System.out.println(e.getMessage())),看运气吧
想不出好办法
然后,工程中代码searching吧。。。。。。
关键字比如(System.out.println(e.getMessage())),看运气吧
想不出好办法
#3
完全不知道啊。。。。log4j是有格式的,应该就是没做保护,直接系统级别抛出的,然后这次请求就废了。。。。
#4
项目上线是不允许存在System.out.println的,你搜索下吧,顺便都干掉
#5
嗯,System.out.println这个肯定是没有的。我的问题是有没有办法能找出抛出空指针异常的代码块?
#6
膜拜大牛飘过
#7
狠一点的办法是看看有没有办法找一个统一的入口,想办法把堆栈打出来。。。
实在不行,比如把struts的代码重编一下,在action的基类里把异常catch掉。。。
当然,你出现这样的情况,可能是所有的异常已经被catch掉,只留log的结果,这样,你只有慢慢的找catch块,加上 stack trace了。
实在不行,比如把struts的代码重编一下,在action的基类里把异常catch掉。。。
当然,你出现这样的情况,可能是所有的异常已经被catch掉,只留log的结果,这样,你只有慢慢的找catch块,加上 stack trace了。
#8
#1
如果没有堆栈,就没有好办法了。要是程序有写其它日志的,看看其它日志里面出错前后的内容,要是什么都没有只有NullPointerException的话,那么看看能不能根据错误发送的时间回忆起做的事情。要是连时间都没有的话,只好自己在界面上东摸摸西摸摸,后台不停的看日志,看什么时候刷出错误来了。
#2
先确认下是怎样方式输出的,log4j,system out print,or others
然后,工程中代码searching吧。。。。。。
关键字比如(System.out.println(e.getMessage())),看运气吧
想不出好办法
然后,工程中代码searching吧。。。。。。
关键字比如(System.out.println(e.getMessage())),看运气吧
想不出好办法
#3
完全不知道啊。。。。log4j是有格式的,应该就是没做保护,直接系统级别抛出的,然后这次请求就废了。。。。
#4
项目上线是不允许存在System.out.println的,你搜索下吧,顺便都干掉
#5
嗯,System.out.println这个肯定是没有的。我的问题是有没有办法能找出抛出空指针异常的代码块?
#6
膜拜大牛飘过
#7
狠一点的办法是看看有没有办法找一个统一的入口,想办法把堆栈打出来。。。
实在不行,比如把struts的代码重编一下,在action的基类里把异常catch掉。。。
当然,你出现这样的情况,可能是所有的异常已经被catch掉,只留log的结果,这样,你只有慢慢的找catch块,加上 stack trace了。
实在不行,比如把struts的代码重编一下,在action的基类里把异常catch掉。。。
当然,你出现这样的情况,可能是所有的异常已经被catch掉,只留log的结果,这样,你只有慢慢的找catch块,加上 stack trace了。