PrintWriter and PrintStream never throw IOExceptions

I think that since System.out and System.err are instances of PrintStream, some more relaxed error handling was provided. This was probably, as other posters have mentioned, to smooth the way for those transitioning from C/C++ circa 1995. When the Reader/Writer API was added, PrintWriter was created to parallel the existing PrintStream.

One application where this behavior is extremely desirable is logging. Logging is ancillary to a larger application. Typically, if logging fails, one doesn't want that the entire application to fail. Thus, it makes sense for System.err, at least, to ignore exceptions.


I wonder if its because IOExceptions are checked, this would require you placing a try catch block around every System.out. call.

update: Or a throws in your method signature.

That would get annoying very quickly.