您好,我对 Java Servlet 还很陌生。我想确保服务器端代码的执行没有异常,即我想检查服务器代码上是否抛出任何异常。如何使用我得到的响应来确定这一点?
谢谢
最佳答案
由于 Servlet 在服务器端执行,因此服务器端代码决定是否应让客户端知道 exception
或不。除非未处理异常(在 servlet 代码内)并且未为 Web 应用程序设置错误页面(两者都不推荐),否则客户端不会自动了解它。
理想情况下,客户永远不应该知道确切的 exception
。相反,客户端应该只收到一条正确的错误消息,说明为什么当前请求无法成功处理。
应根据需要共享错误详细信息。例如,如果输入验证失败,则在错误消息中包含无效字段的名称是有意义的。显示 NumberFormatException
是不合适的相反(例如,因为客户输入的年龄不是数字)。
编辑:
这里没有单一正确的方法。您可以采用多种方法,具体取决于您的 Web 应用程序希望向客户端提供有关错误的描述程度。
如果您只是需要让客户端知道发生了错误并提供简短的错误描述,您可以使用 sendError()
(在幕后会自动将 HTTP 状态 header 设置为错误代码,例如下面的 400 Bad Request)
if (request.getParameter("id") == null)
response.sendError(response.SC_BAD_REQUEST, "ID parameter missing");
其他方法包括配置 <error-pages>
在你的web.xml
对于不同的错误代码或异常。容器将自动转发到 .jsp
下面配置的文件。
<error-page>
<error-code>404</error-code>
<location>/error404.jsp</location>
</error-page>
<error-page>
<exception-type>java.lang.Exception</error-code>
<location>/errorPage.jsp</location>
</error-page>
JSP 需要有其 isErrorPage
属性设置为 true
接收隐式 exception
对象以获取有关异常的更多信息。例如,exception.getMessage()
可以用于(在某些情况下)生成要向用户显示的错误消息。
客户端
客户端不需要执行任何特殊操作(例如 getError())即可接收错误。客户端仍然会接收浏览器呈现的 HTML,就像请求成功一样,但由于请求没有成功,客户端会收到 HTML 格式的错误消息(甚至可以 view > source
它)。
发送的 HTML 取决于您是否使用 sendError()
(这将从您的 Web 服务器(如 Tomcat)发送标准错误响应)或您自己配置的 <error-page>
JSP,在这种情况下您可以完全控制 HTML 错误模板。
关于java - 如何检查servlet的执行是否没有异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17094440/