今天发现一个问题,编写代码向Servlet发送请求,接收响应报文,发出去以后"报服务器返回500"异常,然而从后台日志中没有发现异常记录.而后用浏览器发请求,发现日志中出现了异常记录.浏览器
思来想去,不知道怎么回事,以前也碰见过几个此种问题,可是都绕过去了,回头看代码,发现是IDE的问题.服务器
以前的Servlet中的service方法在声明的时候都不会声明抛出异常,然而,若是用eclipse 的快捷键选择重写service方法的话,默认的会声明service方法抛出ServletException和IOException .因此若是代码中有可能抛出此两种异常的地方,就会直接从service方法中抛出了,因此在此类地方IDE不会提示有可能产生异常,天然就没有写catch异常和记录日志的逻辑.eclipse
解决的办法就是在声明service方法的时候去掉throws ServletException和,IOExceptionspa
这算是个经验吧.指针
今天又想到,相似空指针异常的运行时异常.若是没有在可能产生此异常的地方写catch Exception,那么发生空指针异常的时候,异常也会被吞掉,不出如今日志里.这个问题比上边说的更加严重.因此在使用一些对象以前判断是否为空很重要.日志