在没有 web.xml 的情况下处理 JavaEE 中的异常

Handling exceptions in JavaEE without web.xml

有没有办法在不向 web.xml 添加选项的情况下将异常处理映射到 servlet 或 JSP?我如何理解从 Java Servlets 3.0 开始,没有 web.xml.

一切都应该是可能的

我就是这种选择

<error-page>
  <exception-type>java.lang.RuntimeException</exception-type>
  <location>/WEB-INF/jsps/exception.jsp</location>
</error-page>

不,当前的 API 要求您将 error-page 放入 web.xml 以进行自定义错误处理。 Servlet 3.0 是朝着正确方向迈出的一步,但它不是完全成熟的替代品,您无法仅使用注释来完成您想做的所有事情。错误页面是它的限制之一。

最现代和最小的方法是定义一个 servlet resposible 来处理您的错误。 见下文。

web.xml

<error-page> 
    <exception-type>java.lang.RuntimeException</exception-type> 
    <location>/runtimeErrorHandler</location> 
</error-page>

RuntimeErrorHandlerServlet.java

@WebServlet(urlPatterns = "/runtimeErrorHandler")
public class RuntimeErrorHandlerServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
        resp.setContentType("text/html; charset=utf-8");
        try (PrintWriter writer = resp.getWriter()) {
            // Write your error handling page here...
        }
    }

}

请注意,您不应捕获如此广泛的异常类型。相反,您应该处理您关心的特定类型。