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
>

Reply via email to