2013-10-31 51 views
1

問題: 我在服務器端生成一個空指針異常的代碼。通常這會導致一個HTTP 500錯誤代碼,並且該代碼的默認錯誤頁面被調用。無論出於何種原因,錯誤將作爲405錯誤顯示給瀏覽器,(方法不允許)。NullPointerException被屏蔽爲HTTP 405錯誤

UserNode userNode= UserGraph.getNode(adjacencyList.get(i)); // This list is empty 

爲空指針的原因我已經解決了,但爲什麼Apache Tomcat上掩蓋這個爲405,而不是500的異常?

問題:爲什麼空指針異常會導致HTTP 405錯誤有什麼常見的原因嗎?

+0

沒有,我能想到的。這聽起來錯了*。 –

+0

我和你在一起。 405錯誤僅針對其他用戶適用的頁面上的一位用戶生成。基本上,用戶不再出現在圖中。 –

+2

是使用servlet實現的默認錯誤頁面嗎?如果您的錯誤處理servlet只實現了doGet(),而另一個servlet的doPost()方法發生異常,則可能會發生此行爲。 –

回答

3

如果您有處理僅實現doGet()的servlet的錯誤並且在另一個servlet的doPost()方法中發生異常(反之亦然),則可能發生此行爲。

+0

太棒了。答案可能已經很明顯,但爲了完整起見。其他http請求類型('doDelete','doPut',...)存在同樣的問題。 – Joe23

0

您的環境中的任何web.xml文件中是否有錯誤映射?如果有的話,那麼tomcat可能會嘗試爲代碼500提取一個錯誤頁面,而這樣做會導致它返回405。