1

问题: 我在服务器端有一些代码会生成空指针异常。通常这会导致 HTTP 500 错误代码,并且我的该代码的默认错误页面被调用。无论出于何种原因,该错误都会作为 405 错误显示给浏览器(不允许使用方法)。

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

我已经解决了空指针的原因,但为什么 Apache Tomcat 将其屏蔽为 405 而不是 500 异常?

问题:空指针异常会导致 HTTP 405 错误的常见原因有哪些?

4

3 回答 3

3

如果您有一个仅实现 doGet() 的错误处理 servlet,并且异常发生在另一个 servlet 的 doPost() 方法中(反之亦然),则可能会发生此行为。

于 2013-10-31T22:55:05.123 回答
0

您的环境中的任何 web.xml 文件中是否有错误映射?如果有,tomcat 可能会尝试获取代码 500 的错误页面,而这样做会导致它返回 405。

于 2013-10-31T23:46:02.160 回答
-1

基于 David Levesque 的回答:错误处理 servlet 的最佳方案是覆盖 javax.servlet.http.HttpServlet 的 service(HttpServletRequest req, HttpServletResponse resp) 方法。

@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
{
     // your code to handle all types of requests: GET, POST, PUT, etc. 
}
于 2021-09-21T10:47:10.700 回答