Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Copyright (C) 2007 The Guava Authors
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   *
   * http://www.apache.org/licenses/LICENSE-2.0
   *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
 
 package com.google.common.io;
 
 
 
 import  javax.annotation.Nullable;

Utility methods for working with Closeable objects.

Author(s):
Michael Lancaster
Since:
1.0
 
 public final class Closeables {
   @VisibleForTesting static final Logger logger
       = Logger.getLogger(Closeables.class.getName());
 
   private Closeables() {}

  
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 {
   // Some code which does something with the Stream. May throw a
   // Throwable.
   threw = false; // No throwable thrown.
 } finally {
   // Close the stream.
   // If an exception occurs, only rethrow it 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.
 
   public static void close(@Nullable Closeable closeable,
       boolean swallowIOExceptionthrows IOException {
     if (closeable == null) {
       return;
     }
     try {
       closeable.close();
     } catch (IOException e) {
       if (swallowIOException) {
         .log(.,
             "IOException thrown while closing Closeable."e);
       } else {
         throw e;
       }
     }
   }

  
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
 
   public static void closeQuietly(@Nullable Closeable closeable) {
     try {
       close(closeabletrue);
    } catch (IOException e) {
      .log(."IOException should not have been thrown."e);
    }
  }
New to GrepCode? Check out our FAQ X