trying out the prototype
Joe Darcy
joe.darcy at oracle.com
Tue Aug 24 11:50:10 PDT 2010
Gernot Neppert wrote:
> Hello,
>
> first of all I have to say that as a long-time advocate of some kind
> of ARM in Java I'm thrilled to finally see it in action!
>
> I've toyed with the latest snapshot and have 2 remarks:
>
> 1. If you initialize a Resource that can only throw on close(), you
> get a compiler error that might be confusing because the automatic
> invocation of close() is invisible to the person writing the code.
> Here's a not-so-useful example that nevertheless exhibits the
> aforementioned behaviour:
>
> try (Reader rdr = new StringReader("Some text"))
> {
> }
>
> 2. If you use multiple Resources, an exception thrown by one of them
> will suppress exceptions thrown by the 'close()' invocation of others.
> While I can see some sense in suppressing exceptions from 'close()' of
> the same instance, I cannot see why this reasoning should apply to
> other instances.
> (I guess this forms a case against the try-with-multiple-resources
> statement in general. The list of semicolon-delimited declarations
> enclosed by parentheses looks weird, anyway ;-)
> Here's an example:
>
With N resources, there are possibly N+1 exceptions that can come out of
the try-with-resources statement, 1 from the block itself and 1 from
each of the close calls. Only one of those exceptions can be the one
which gets propagated out of the block.
As covered in the other recent thread, the first exception thrown is
estimated to be the most informative one about what actually went wrong.
-Joe
More information about the coin-dev
mailing list