ARM and thread interruption
Paul Benedict
pbenedict at apache.org
Mon Mar 14 14:35:16 PDT 2011
FWIW, I think David's wording is more clear than the addition to the
javadoc.
Paul
On Mon, Mar 14, 2011 at 3:53 PM, Joe Darcy <joe.darcy at oracle.com> wrote:
> On 3/14/2011 1:41 PM, David Holmes wrote:
> > Tim Peierls said the following on 03/15/11 04:55:
> >> I think the question was whether the spec would warn against
> >> AutoCloseable.close with other kinds of exceptions besides IE, and the
> >> answer (as of this writing) is "only in general terms".
> > And a general consideration here is that if your close() method can
> > throw significant/interesting exceptions, which by definition of the
> > try-with-resources construct will get suppressed when an exception
> > occurs in the main block, then perhaps what you are defining should not
> > be an AutoCloseable.
> >
> > David
> >
>
> Yes, the changeset implementing the javadoc change [1], includes a
> warning along those lines:
>
> --- a/src/share/classes/java/lang/AutoCloseable.java Mon Mar 14
> 18:13:32 2011 +0000
> +++ b/src/share/classes/java/lang/AutoCloseable.java Mon Mar 14
> 11:45:21 2011 -0700
> @@ -34,12 +34,27 @@ public interface AutoCloseable {
> public interface AutoCloseable {
> /**
> * Closes this resource, relinquishing any underlying resources.
> - * This method is invoked automatically by the {@code
> - * try}-with-resources statement.
> + * This method is invoked automatically on objects managed by the
> + * {@code try}-with-resources statement.
> *
> - * <p>Classes implementing this method are strongly encouraged to
> - * be declared to throw more specific exceptions (or no exception
> - * at all, if the close cannot fail).
> + * <p>While this interface method is declared to throw {@code
> + * Exception}, implementers are <em>strongly</em> encouraged to
> + * declare concrete implementations of the {@code close} method to
> + * throw more specific exceptions, or to throw no exception at all
> + * if the close operation cannot fail.
> + *
> + * <p><em>Implementers of this interface are also strongly advised
> + * to not have the {@code close} method throw {@link
> + * InterruptedException}.</em>
> + *
> + * This exception interacts with a thread's interrupted status,
> + * and runtime misbehavior is likely to occur if an {@code
> + * InterruptedException} is {@linkplain Throwable#addSuppressed
> + * suppressed}.
> + *
> + * More generally, if it would cause problems for an
> + * exception to be suppressed, the {@code AutoCloseable.close}
> + * method should not throw it.
> *
> * <p>Note that unlike the {@link java.io.Closeable#close close}
> * method of {@link java.io.Closeable}, this {@code close} method
> @@ -48,9 +63,8 @@ public interface AutoCloseable {
> * visible side effect, unlike {@code Closeable.close} which is
> * required to have no effect if called more than once.
> *
> - * However, while not required to be idempotent, implementers of
> - * this interface are strongly encouraged to make their {@code
> - * close} methods idempotent.
> + * However, implementers of this interface are strongly encouraged
> + * to make their {@code close} methods idempotent.
> *
> * @throws Exception if this resource cannot be closed
> */
>
>
> -Joe
>
> [1] http://hg.openjdk.java.net/jdk7/tl/jdk/rev/1924a21184a6
>
>
More information about the coin-dev
mailing list