[
https://issues.apache.org/jira/browse/IO-303?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13210346#comment-13210346
]
Fabian Barney commented on IO-303:
--
In my code I prefer throwing the first one. There is one exception when a
latter Throwable occurrs and it is an Error and the former not.
In my opinion this is the Throwable you want to see.
Another approach is to throw something like a MultiIOException containing all
occurred exceptions.
I agree that this all is not a real pleasure, but better than leaving resources
open that might be closed successfully.
I've written a MultiOutputStream yesterday:
https://github.com/fabian-barney/Utils/blob/master/utils/src/com/barney4j/utils/io/MultiOutputStream.java
I am not sure for myself that I made the right decision here.
TeeOutputStream fails executing branch.close() when main.close() raised an
exception
Key: IO-303
URL: https://issues.apache.org/jira/browse/IO-303
Project: Commons IO
Issue Type: Bug
Components: Streams/Writers
Affects Versions: 2.1
Reporter: Fabian Barney
Labels: close, stream
TeeOutputStream.close() looks like this:
{code:title=TeeOutputStream.java|borderStyle=solid}
/**
* Closes both streams.
* @throws IOException if an I/O error occurs
*/
@Override
public void close() throws IOException {
super.close();
this.branch.close();
}
{code}
It is obvious that {{this.branch.close()}} is not executed when
{{super.close()}} raises an exception. {{super.close()}} may in fact raise an
IOException since {{ProxyOutputStream.handleIOException(IOException)}} is not
overridden.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira