servlet的service方法吞異常問題

今天發現一個問題,編寫代碼向Servlet發送請求,接收響應報文,發出去以後"報服務器返回500"異常,然而從後臺日誌中沒有發現異常記錄.而後用瀏覽器發請求,發現日誌中出現了異常記錄.瀏覽器

思來想去,不知道怎麼回事,以前也碰見過幾個此種問題,可是都繞過去了,回頭看代碼,發現是IDE的問題.服務器

以前的Servlet中的service方法在聲明的時候都不會聲明拋出異常,然而,若是用eclipse 的快捷鍵選擇重寫service方法的話,默認的會聲明service方法拋出ServletException和IOException .因此若是代碼中有可能拋出此兩種異常的地方,就會直接從service方法中拋出了,因此在此類地方IDE不會提示有可能產生異常,天然就沒有寫catch異常和記錄日誌的邏輯.eclipse


解決的辦法就是在聲明service方法的時候去掉throws ServletException和,IOExceptionspa


這算是個經驗吧.指針


今天又想到,相似空指針異常的運行時異常.若是沒有在可能產生此異常的地方寫catch Exception,那麼發生空指針異常的時候,異常也會被吞掉,不出如今日誌裏.這個問題比上邊說的更加嚴重.因此在使用一些對象以前判斷是否爲空很重要.日誌

相關文章
相關標籤/搜索