Re: (File)OutputStreams and their usage
Lew wrote:
Leonard Milcin wrote:
public void load(File file) throws ... {
OutputStream os;
try {
os = new FileOutputStream(file);
load(os);
} finally {
if (os!=null) {
os.close();
}
}
}
The check for os non-nullity is not needed here.
I believe that is true. But checking refs for null in finally
before calling close on them is generally a good practice.
It is not needed here, but getting it in the fingers could
be a good thing-
Because of that, you
can move the close() inside the try{} block.
I don't think so - in that case it will not be called if load throws
an exception.
because
close() can throw an Exception, too.
That would need to be handled to get a robust application.
The idiom above is a bit too loose. It doesn't log, it doesn't
translate the Exception into the application domain, and it allows
Exceptions to happen in the finally{} block. It also doesn't admit of a
coherent Exception-handling strategy throughout the application.
Not necessarily.
It is bad practice to catch at every level in the call stack.
So if this is the outer level in a layer, then it does have poor
exception handling.
But if it is any other level, then it is just fine.
(except for the exception in close problem)
Arne