Class Closeables

    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      static void  closeable, boolean swallowIOException)
      Closes a , with control over whether an IOException may be thrown.
      static void  inputStream)
      Closes the given , logging any IOException that's thrown rather than propagating it.
      static void  reader)
      Closes the given , logging any IOException that's thrown rather than propagating it.
      • Methods inherited from class java.lang.

        , , , , , , , , , ,
    • Method Detail

      • close

        public static void   closeable,
                                 boolean swallowIOException)
                          throws 
        Closes a , 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:
        - if swallowIOException is false and close throws an IOException.
      • closeQuietly

        public static void   inputStream)
        Closes the given , logging any IOException that's thrown rather than propagating it.

        While it's not safe in the general case to ignore exceptions that are thrown when closing an I/O resource, it should generally be safe in the case of a resource that's being used only for reading, such as an InputStream. Unlike with writable resources, there's no chance that a failure that occurs when closing the stream indicates a meaningful problem such as a failure to flush all bytes to the underlying resource.

        Parameters:
        inputStream - the input stream to be closed, or null in which case this method does nothing
        Since:
        17.0
      • closeQuietly

        public static void   reader)
        Closes the given , logging any IOException that's thrown rather than propagating it.

        While it's not safe in the general case to ignore exceptions that are thrown when closing an I/O resource, it should generally be safe in the case of a resource that's being used only for reading, such as a Reader. Unlike with writable resources, there's no chance that a failure that occurs when closing the reader indicates a meaningful problem such as a failure to flush all bytes to the underlying resource.

        Parameters:
        reader - the reader to be closed, or null in which case this method does nothing
        Since:
        17.0