commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Fabian Barney (Issue Comment Edited) (JIRA)" <j...@apache.org>
Subject [jira] [Issue Comment Edited] (IO-303) TeeOutputStream does not call branch.close() when main.close() throws an exception
Date Fri, 17 Feb 2012 23:04:57 GMT

    [ https://issues.apache.org/jira/browse/IO-303?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13210625#comment-13210625
] 

Fabian Barney edited comment on IO-303 at 2/17/12 11:03 PM:
------------------------------------------------------------

Thanks for addressing this issue that fast! 
Here's how I would write it but it is just a matter of taste...
{noformat}
    @Override
    public void close() throws IOException {        
        try {
            super.close();
        } 
        finally {
            this.branch.close();
        }
    }
{noformat} 

                
      was (Author: fabian.barney):
    This is ok I think. Here's how I would write it but it is just a matter of taste...
{noformat}
    @Override
    public void close() throws IOException {        
        try {
            super.close();
        } 
        finally {
            this.branch.close();
        }
    }
{noformat} 

Thanks for addressing this issue that fast!
                  
> TeeOutputStream does not call branch.close() when main.close() throws 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
>            Assignee: Gary D. Gregory
>              Labels: close, stream
>             Fix For: 2.2
>
>
> 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

        

Mime
View raw message