gpt4 book ai didi

java - 什么时候可以从 Servlet 抛出 ServletException?

转载 作者:太空狗 更新时间:2023-10-29 22:43:53 26 4
gpt4 key购买 nike

我过去一直在抛出 ServletException,当 Servlet 出现问题时,主要是将异常包装在 ServletException 中。

现在我认为最好不要抛出 ServletException 而是用 response.sendError(sc) 响应并使用正确的 HTTP 状态代码。

如果我无法使用 reponse.sendError 发送错误,(IOException),我将 IOException 包装在 中ServletException.

以上是更好的回应方式吗?什么时候可以抛出 ServletException

最佳答案

我刚刚得出与@alamar 相反的结论。我的情况是编写一个 REST 风格的 servlet,由 Oracle 数据库中的代码调用,而不是由人类调用。

我想在请求信息无效或缺失时,返回HTTP代码400 Bad Request给调用方。抛出 ServletException 会导致容器返回 500 Internal Server Error,这说明服务器有问题,而不是请求有问题。

这是我采用的解决方案。

  1. 创建一个扩展 Exception 的简单异常类 RequestException
  2. 使用抛出 new RequestException(message) 的方法检查请求的有效性。
  3. 在 servlet 的 doPost 方法中捕获 RequestException 并像这样调用 HttpServletResponse.sendError():

    try {
    validateRequest(request);
    // Do stuff with a valid request.
    } catch (RequestException e) {
    response.sendError(HttpServletResponse.SC_BAD_REQUEST, e.getMessage());
    }

消息返回给调用者,因为它会带有 ServletException

关于java - 什么时候可以从 Servlet 抛出 ServletException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/839225/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com