Java异常如何分析在哪里产生的?

时间:2022-08-29 20:20:04
现在项目代码不算大,但是逻辑挺复杂的。

最近看线上日志,发现tomcat中出现了大量的空指针异常,但是很奇怪。只是简单的打出了NullPointerException,没有详细的堆栈信息,可能是因为某块代码没做异常保护。导致走这块流程的请求全都失效了。。

但是有什么具体的方法找到是在哪里抛出的异常吗?有没有好的方法???手动的话,完全无法下手= =

希望各位Java大牛指教一下。。。。

8 个解决方案

#1


如果没有堆栈,就没有好办法了。要是程序有写其它日志的,看看其它日志里面出错前后的内容,要是什么都没有只有NullPointerException的话,那么看看能不能根据错误发送的时间回忆起做的事情。要是连时间都没有的话,只好自己在界面上东摸摸西摸摸,后台不停的看日志,看什么时候刷出错误来了。

#2


先确认下是怎样方式输出的,log4j,system out print,or others
然后,工程中代码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了。

#8


该回复于2014-09-22 08:47:49被版主删除

#1


如果没有堆栈,就没有好办法了。要是程序有写其它日志的,看看其它日志里面出错前后的内容,要是什么都没有只有NullPointerException的话,那么看看能不能根据错误发送的时间回忆起做的事情。要是连时间都没有的话,只好自己在界面上东摸摸西摸摸,后台不停的看日志,看什么时候刷出错误来了。

#2


先确认下是怎样方式输出的,log4j,system out print,or others
然后,工程中代码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了。

#8


该回复于2014-09-22 08:47:49被版主删除