tags:

views:

178

answers:

3

I get why an HttpServlet would throw ServletException, but why IOException? What was the reasoning behind this?

A: 

If the servlet writes to an output stream (i.e. the page) through I/O interfaces, any I/O error will be reported as an IOException.

Perhaps the API shouldn't be using I/O interfaces directly. It's not uncommon for WebApps using RMI to allow the RMIException to be fall through the servlet interface (it's a subclass of IOException for some reason).

Tom Hawtin - tackline
A: 

I'd suggest that an IOException indicates a problem with processing input/output, e.g. problems reading from the request input, or writing the response, whereas a ServletException has more to do with servlet-specific problems, such as errors regarding servlet provisioning/initialisation, and processing requests.

Rob
+2  A: 

From the docs:

IOException - if an input or output error is detected when the servlet handles the GET request

This can happen when you print the servlet output:

response.getWriter().print() - this method throws IOException

The socket can be closed before the response finishes to print the output.

razenha