java - 如何正确处理 JSP/Servlet 应用程序中的异常?

标签 java jsp servlets

如何正确处理 servlet 中遇到的错误?现在,我继承的应用程序(仅使用纯 JSP/Servlet)有一个名为 Controller 的父类(super class),它扩展了 HttpServlet 并且所有其他 servlet 都从它扩展。在那个 Controller 类中是一个 try and catch block ,如下所示:

try {
    // execute doPost or doGet here
} catch (Exception e) {
    // show a generic error page
}

这是正确的做法吗?它看起来很笨重,而且似乎并不总是有效。我只是一名实习生,所以我没有太多这方面的经验。有什么建议吗?我正在努力使该应用程序更健壮..

最佳答案

标准的做法是让您的 Servlet 的 doXxx()方法(例如 doGet()doPost() 等)抛出一个 ServletException并让容器捕获并处理它。您可以指定要在 WEB-INF/web.xml 中显示的自定义错误页面使用 <error-page>标签:

<error-page>
    <error-code>500</error-code>
    <location>/error.jsp</location>
</error-page>

如果你最终得到一个 Exception你无法优雅地处理,只需将其包装在 ServletException 中即可像这样:

try {
    // code that throws an Exception
} catch (Exception e) {
    throw new ServletException(e);
}

关于java - 如何正确处理 JSP/Servlet 应用程序中的异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6182771/

相关文章:

java - 如何在 Android 中查找名称以特定字符串开头的文件夹中的文件

java - 如何在jsp页面中显示图片?

java - 为什么我的简单 Struts2 示例不起作用?

java - JSP 中的表单 - 在每个帖子旁边添加日期

java - spring servlet url-pattern 映射不适用于星号

java - 我们如何从 "Authorization"中删除 'HttpServletRequest' header

eclipse - 在 Eclipse 中运行时不显示 Tomcat 主页

java - 正确使用JTidy净化HTML

java - 如果生产代码针对的是较旧的 JRE,那么在测试代码中使用新的 JDK API 是否安全?

java - 无法使用 Geronimo 检索 "entityManagerFactory"