【问题标题】:Handling the Writer/OutputStream returned by ServletResponse's .get{Writer,OutputStream}(): what to do and not to do? [duplicate]处理 ServletResponse 的 .get{Writer,OutputStream}() 返回的 Writer/OutputStream:该做什么不该做什么? [复制]
【发布时间】:2013-01-02 10:16:59
【问题描述】:

我第一次涉足 Java servlet 编程,由于我更熟悉“服务器端”编程,因此我养成了处理 Writers 和 OutputStreams 的一些习惯。但是,也许这些习惯在编写servlet时并不适合,可用的Javadoc并没有明确回答我下面的两个问题。

第一个问题:您是否应该在尝试写入时捕获 IOExceptions?如果你不知道,那么在这种情况下 servlet 容器的默认行为是什么(即 HTTP 返回码是什么)?

第二个问题:您是否应该让 servlet 引擎为您关闭 OUTputStream/Writer?在 servlet 中自行关闭有什么危险吗?

【问题讨论】:

  • 如果你有两个问题要问,你应该把它们分开问。

标签: java servlets


【解决方案1】:

第一个问题:您是否应该在尝试写入时捕获抛出的 IOExceptions?假设你不知道,在这种情况下 servlet 容器的默认行为是什么(即 HTTP 返回码是什么)?

servlet 抛出的随机异常的默认错误代码通常是 503(内部服务器错误),但我认为没有要求(即不同的 servlet 容器可能会做不同的事情)。您是否应该捕获异常并自己处理它完全取决于您的 servlet 需要具有的行为(也许您对不同情况有不同的错误代码,也许即使您无法读取所有数据,您也想继续,等等)。

第二个问题:您是否应该让 servlet 引擎为您关闭 OUTputStream/Writer?在 servlet 中自己关闭它有什么危险吗?

我相信大多数(所有?)servlet 引擎会为您关闭流,但我仍然认为最好自己关闭它。

【讨论】:

    猜你喜欢
    • 2012-06-04
    • 1970-01-01
    • 2011-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多