Class Closeables


  • @Beta
    public final class Closeables
    extends Object
    Utility methods for working with Closeable objects.
    Since:
    1.0
    • Method Detail

      • close

        public static void close​(@Nullable
                                 Closeable closeable,
                                 boolean swallowIOException)
                          throws IOException
        Closes a Closeable, with control over whether an IOException may be thrown. This is primarily useful in a finally block, where a thrown exception needs to be logged but not propagated (otherwise the original exception will be lost).

        If swallowIOException is true then we never throw IOException but merely log it.

        Example:

           
        
           public void useStreamNicely() throws IOException {
             SomeStream stream = new SomeStream("foo");
             boolean threw = true;
             try {
               // ... code which does something with the stream ...
               threw = false;
             } finally {
               // If an exception occurs, rethrow it only if threw==false:
               Closeables.close(stream, threw);
             }
           }
        Parameters:
        closeable - the Closeable object to be closed, or null, in which case this method does nothing
        swallowIOException - if true, don't propagate IO exceptions thrown by the close methods
        Throws:
        IOException - if swallowIOException is false and close throws an IOException.
      • closeQuietly

        @Deprecated
        public static void closeQuietly​(@Nullable
                                        Closeable closeable)
        Deprecated.
        Where possible, use the try-with-resources statement if using JDK7 or Closer on JDK6 to close one or more Closeable objects. This method is deprecated because it is easy to misuse and may swallow IO exceptions that really should be thrown and handled. See Guava issue 1118 for a more detailed explanation of the reasons for deprecation and see Closing Resources for more information on the problems with closing Closeable objects and some of the preferred solutions for handling it correctly. This method is scheduled to be removed in Guava 16.0.
        Equivalent to calling close(closeable, true), but with no IOException in the signature.
        Parameters:
        closeable - the Closeable object to be closed, or null, in which case this method does nothing