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