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