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