У меня есть следующий код сервлета:
@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
Но в выводе браузера Iожидал исключения NullPointerException.
Когда я комментирую вызов flash (),
//writer.flush();
происходит исключение NullPointerException.
Я знаю, что вызов flush () немедленно сбрасывает содержимое в ответ итакже совершить ответ.Но я не понимаю, почему это блокирует генерирование исключений, потому что в то же время тексты "Some text 2" и "MyServlet :: doGet 2" пришли к выводу.
Буду рад любым идеям.Спасибо.