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 >