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

Kristian Rosenvold commented on IO-469:
---------------------------------------

Fixed in r1686456

> "Self-suppression not permitted" while using BrokenOutput and BrokenInput 
> streams with try-with-resource. 
> ----------------------------------------------------------------------------------------------------------
>
>                 Key: IO-469
>                 URL: https://issues.apache.org/jira/browse/IO-469
>             Project: Commons IO
>          Issue Type: Bug
>          Components: Streams/Writers
>    Affects Versions: 2.4
>         Environment: Oracle JVM 1.8_25 (but should be reproducible starting 
> from Java 7).
>            Reporter: Grigory Fadeev
>            Priority: Trivial
>
> Hi,
> First of all thanks a lot for great library :)
>  
> I faced with "Self-suppression not permitted" issue while using 
> BrokenInputStream & BrokenOutputStream classes with try-with-resources. 
> Root cause of this issue is that these classes always throws same exception 
> instance for all methods.
> That's how it looks like when javac unfolds try-with-resources: 
> {code:java}
>         InputStream is = new BrokenInputStream();
>         Throwable localThrowable2 = null;
>         try {
>             is.read();
>         } catch (Throwable localThrowable1) {
>             localThrowable2 = localThrowable1;
>             throw localThrowable1;
>         } finally {
>             if (is != null) {
>                 if (localThrowable2 != null) {
>                     try {
>                         is.close();
>                     } catch (Throwable x2) {
>                         localThrowable2.addSuppressed(x2);
>                     }
>                 } else {
>                     is.close();
>                 }
>             }
>         }
> {code}
> So as you can see when close method is invoked resulting exception will be 
> added to itself (first time thrown during read method), this leads to 
> IllegalArgumentException "Self-suppression not permitted".
> It can be easily fixed by omitting throwing of same exception instance for 
> close method. 
> If you don't mind I would attach patch which will fix this issue.  



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to