我有一个令人着迷的 servlet 代码:
@WebServlet("/my")
public class MyServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("MyServlet::doGet 1");
PrintWriter writer = resp.getWriter();
writer.write("Some text 1 \n");
writer.flush();
writer.write("Some text 1 \n");
System.out.println("MyServlet::doGet 2");
throw new NullPointerException();
}
}
日志输出为:
MyServlet::doGet 1
MyServlet::doGet 2
浏览器输出为:
Some text 1
Some text 2
但是在浏览器输出中,我期望NullPointerException。
当我评论flash()调用时
//writer.flush();
发生 NullPointerException。
我知道 flush() 调用会立即将内容刷新到响应并提交响应。但我不明白为什么这会阻止异常抛出,因为同时“一些文本2”和“MyServlet::d oGet 2”文本开始输出。
会很高兴有任何想法。谢谢。
慕姐4208626
相关分类