There was some related discussion here:

https://issues.apache.org/jira/browse/IO-249

On 25 October 2013 12:52, Matt Benson <gudnabr...@gmail.com> wrote:
> On Oct 25, 2013 6:30 AM, "Damjan Jovanovic" <damjan....@gmail.com> wrote:
>>
>> On Fri, Oct 25, 2013 at 12:36 PM, Jörg Schaible
>> <joerg.schai...@scalaris.com> wrote:
>> > Hi Damjan,
>> >
>> > Damjan Jovanovic wrote:
>> >
>> > [snip]
>> >
>> > Thanks for explanation.
>> >
>> >> We would be able to adapt that for Java < 1.7 by swallowing the close
>> >> exception instead of calling addSuppressed() on the primary exception,
>> >> but the show stopper is catching and rethrowing the primary exception
>> >> (Throwable), which javac < 1.7 refuses to compile because it doesn't
>> >> do "Rethrowing Exceptions with More Inclusive Type Checking"
>> >> (
> http://docs.oracle.com/javase/7/docs/technotes/guides/language/catch-multiple.html
> ).
>> >>
>> >> But this would work and always sets succeeded correctly without
>> >> catch/re-throw:
>> >>
>> >> final InputStream is = factoryMethodThatCanThrow();
>> >> boolean succeeded = false;
>> >> try {
>> >>     try {
>> >>         is.methodThatCanThrow();
>> >>     } finally {
>> >>     }
>> >>     succeeded = true;
>> >> } finally {
>> >>     closeSafely(!succeeded, is);
>> >> }
>> >
>> > I guess the nested try was unintentionally ;-)
>> >
>> > Cheers,
>> > Jörg
>>
>> Well that actually won't work, because the "succeeded = true;" will be
>> skipped if there is a "return;" in the inner try.
>>
>> Other than a custom Java compiler, I guess there's no clean way of
>> doing this in Java < 1.7. There's really only option 2 - with being
>> careful to always set succeeded correctly on all paths out of the try
>> block. Almost like releasing memory in C.
>>
>
> I haven't deeply followed this conversation, but would this be a candidate
> for a [weaver] module?
>
> Matt
>
>> Damjan
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
>> For additional commands, e-mail: dev-h...@commons.apache.org
>>

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
For additional commands, e-mail: dev-h...@commons.apache.org

Reply via email to